【问题标题】:Change sortorder in database using jstree and asp.net mvc使用 jstree 和 asp.net mvc 更改数据库中的排序顺序
【发布时间】:2011-10-19 08:10:40
【问题描述】:

我正在尝试更改数据库表中的排序顺序,如下所示:

id parentid sitename sortorder
1  0        home     0 
2  0        about    1 
3  0        product  2 
4  0        contact  3

现在,当我使用 jstree 在“产品”和“联系人”之间向下拖动“主页”时,我需要更改所有 4 个站点的排序顺序。当我删除“home”站点时,我知道的是 id、parentid 和新的 sortorder-index,但是我的更新 linq sql 如何让它工作?

【问题讨论】:

    标签: jquery asp.net-mvc jstree


    【解决方案1】:

    使用 Adjacency-Model 你没有太多选择,但需要选择然后更新每个兄弟。

    SELECT id, sortorder FROM table WHERE parentid = _MOVED ELEMENT PARENT ID_ ORDER BY sortorder DESC
    

    这将为您提供该元素的所有兄弟姐妹。现在您需要根据输入重新排序结果数组。搜索移动的元素并在数组层次结构中移动。

    更新节点,完成排序(一个简单的计数器就足够了),你就完成了。

    我可以为您提供一些伪代码,但 ASP 不是我的语言。希望这个想法也能有所帮助。

    更新

    PHP 就是这样。

    //search reorder element
    $movedElementOldOrderIndex = $movedElementFromDb['sortorder'];
    //target array
    $newOrderedElements = array();
    foreach($elementsFromDb as $order => $el) {
       //duplicate detection
       if($order == $movedElementOldOrderIndex) {
            continue;
       }
    
       //reordering is here
       if($movedElementNewOrderIndex == $order) {
           $newOrderedElements[] = $elementsFromDb[$movedElementOldOrderIndex];
       }
    
       //push all other elements
       $newOrderedElements[] = $el;
    }
    

    这将为您提供一个数组,其中index == sortorder,您可以相应地更新您的数据库记录。

    更新

    $movdeElementFromDB - 在请求中移动的实际 db 元素

    $el - 是当前元素/上面查询结果的一个兄弟

    【讨论】:

    • 你能解释一下重新排序吗,我不关心语法,只要用你使用的任何语言来做 c#,vb,php 并附上一些注释?
    • $el 和 $movedElementNewOrder 是什么?
    猜你喜欢
    • 2012-01-16
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多