easyUI DataGrid多行上下移动排序,可直接保存到后台

今天遇到这个业务,记录下来,参考至 https://bbs.csdn.net/topics/390641047

1.移动行操作(相对于2只是静态移动)

function move(isUp) {
	var dt=$('#mainTable');
    var selections = dt.datagrid("getSelections");
    if(selections.length == 0){
        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);
    }
}

2.移动行并且更新列序号,这里更新orderNo排序号(相对于1可以用 getChanges获取到移动过的行,包括序号修改过的行,可以直接保存到后台

function move1(isUp) {
	var dt=$('#mainTable');
    var selections = dt.datagrid("getSelections");
    if(selections.length == 0){
        return;
    }
    var datas = dt.datagrid("getRows");
    var length = dt.datagrid("getRows").length;
    //缓存选中行
    var rowIndexs=[];
    //更新序号,删除行,插入行
    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;
            //修改序号
            selections[$i].orderNo = parseInt(selections[$i].orderNo) - 1;
            dt.datagrid('updateRow',{ index: newIndex,row: {orderNo : parseInt(datas[newIndex].orderNo) + 1 } });
        }else{
            var $i = selections.length-1-i;
            index = dt.datagrid('getRowIndex',selections[$i]);
            if(index >= length-1)return;
            newIndex = index + 1;
            //修改序号
            selections[$i].orderNo = parseInt(selections[$i].orderNo) + 1;
            dt.datagrid('updateRow',{ index: newIndex,row: {orderNo : parseInt(datas[newIndex].orderNo) - 1 } });
        }
        dt.datagrid("deleteRow",index);
        //插入行
        dt.datagrid("insertRow",{index : newIndex,row:selections[$i]});
        //缓存选中行
        rowIndexs.push(newIndex);
    }
    //重新选择行
    for(var i=0; i

 

你可能感兴趣的:(easyUI)