今天遇到这个业务,记录下来,参考至 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<rowIndexs.length; i++){
dt.datagrid("selectRow",rowIndexs[i]);
}
}
function save(){
//保存数据
var rows = $('#mainTable').datagrid('getChanges');
// $.ajax
}