解决方案 »

  1.   

    jquery 好像有类似的sort 插件。
      

  2.   


    主要是datagrid的每行是分段的,我晕倒。你看代码:
    $row.each(function(){
                            var prev = $(this).prev();
                            prev.length && $(this).insertBefore(prev);
                    });
      

  3.   

    结贴!!!
    自己搞定了!
    方法1(不会改变行索引,动态添加行至首行会有问题):
    function move(isUp) {
            var selections = dt.datagrid("getSelections");
            if(selections.length == 0){
                    return;
            }
            if(selections.length > 1){
                    //$.message.show("一次只能移动一条数据。","warning",2);
                    //return;
            }
            var length = dt.datagrid("getRows").length;
        var $view = $('div.datagrid-view');
        if(isUp){
                for(var i = 0; i < selections.length; i++){
                            var index = dt.datagrid('getRowIndex',selections);
                            var $row = $view.find('tr[datagrid-row-index=' + index + ']').eq(1);
                            if($row.index() <= 0) return;
                            $row.insertBefore($row.prev());
                    }
        }else{
                for(var i = selections.length - 1; i >= 0; i--){
                            var index = dt.datagrid('getRowIndex',selections);
                            var $row = $view.find('tr[datagrid-row-index=' + index + ']').eq(1);
                            if($row.index() >= length-1) return;
                            $row.insertAfter($row.next());
                    }
        }
    }方法2:
    function move1(isUp) {
            var selections = dt.datagrid("getSelections");
            if(selections.length == 0){
                    return;
            }
            if(selections.length > 1){
                    //$.message.show("一次只能移动一条数据。","warning",2);
                    //return;
            }
            var length = dt.datagrid("getRows").length;
            for(var i = 0; i < selections.length; i++){
                    var index ,$i,newIndex;
                    if(isUp){
                            $i = i;
                            index = dt.datagrid('getRowIndex',selections[$i]);
                            if(index <= 0)return;
                            newIndex = index - 1;
                    }else{
                            var $i = selections.length-1-i;
                            index = dt.datagrid('getRowIndex',selections[$i]);
                            if(index >= length-1)return;
                            newIndex = index + 1;
                    }
                    dt.datagrid("deleteRow",index);
                    dt.datagrid("insertRow",{index : newIndex,row:selections[$i]});
                    dt.datagrid("selectRow",newIndex);
                    
            }
    }