easyui datagrid表格多行上下移动排序的问题。。。

铀钚氕氘氚 2013-11-13 10:36:48


如题,一个很让人蛋疼的问题:实现datagrid多行移动排序,单行的很简单,但是多行的我想了很久还是没有结果,所以来问问朋友们,希望不吝赐教,小弟不胜感激!!!

贴上单行移动的代码:

function move(isUp) {
var selections = dt.datagrid("getSelections");
if(selections.length == 0){
return;
}
if(selections.length > 1){
$.message.show("一次只能移动一条数据。","warning",2);
return;
}
var $view = $('div.datagrid-view');
var index = dt.datagrid('getRowIndex',selections[0]);
var $row = $view.find('tr[datagrid-row-index=' + index + ']');
if (isUp) {
$row.each(function(){
var prev = $(this).prev();
prev.length && $(this).insertBefore(prev);
});
} else {
$row.each(function(){
var next = $(this).next();
next.length && $(this).insertAfter(next);
});
}
}
...全文
815 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nangeheiseyoumo 2014-10-14
  • 打赏
  • 举报
回复
很实用啊 3q
qqjZuo 2014-09-29
  • 打赏
  • 举报
回复
LZ 置顶 和 置底是否 实现呢???希望楼主分享宝贵经验,谢谢
亮亮爱吃虾 2014-02-15
  • 打赏
  • 举报
回复
请问,你是怎么保存到数据库的?
c3124 2013-11-14
  • 打赏
  • 举报
回复
引用 4 楼 hzl96363 的回复:
结贴!!! 自己搞定了! 方法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); } }
电贺
铀钚氕氘氚 2013-11-13
  • 打赏
  • 举报
回复
引用 2 楼 u012721633 的回复:
单行做的好 mark 多行不能做个循环吗
主要是datagrid的每行是分段的,我晕倒。你看代码: $row.each(function(){ var prev = $(this).prev(); prev.length && $(this).insertBefore(prev); });
c3124 2013-11-13
  • 打赏
  • 举报
回复
单行做的好 mark 多行不能做个循环吗
tony4geek 2013-11-13
  • 打赏
  • 举报
回复
jquery 好像有类似的sort 插件。
铀钚氕氘氚 2013-11-13
  • 打赏
  • 举报
回复
结贴!!! 自己搞定了! 方法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); } }

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧