Jquery jqGrid:组合可排序行和gridDnD(重复行)
我希望能够将项目从Grid1拖动到Grid2,然后允许用户对Grid2的项目进行排序。sortableRows选项和gridDnd选项单独工作时不会出现问题。当两个集成一起使用并且用户对Grid2中的行进行排序时,这些行将被复制,就像从Grid1拖动一样 使用jQuery1.4.4、jqueryui 1.8.10、jqGrid 4.2 下面是一些示例代码,演示了该问题:Jquery jqGrid:组合可排序行和gridDnD(重复行),jquery,jquery-ui,jqgrid,Jquery,Jquery Ui,Jqgrid,我希望能够将项目从Grid1拖动到Grid2,然后允许用户对Grid2的项目进行排序。sortableRows选项和gridDnd选项单独工作时不会出现问题。当两个集成一起使用并且用户对Grid2中的行进行排序时,这些行将被复制,就像从Grid1拖动一样 使用jQuery1.4.4、jqueryui 1.8.10、jqGrid 4.2 下面是一些示例代码,演示了该问题: <script type="text/javascript"> $(document).ready(functio
<script type="text/javascript">
$(document).ready(function () {
// Creating grid1
jQuery("#grid1").jqGrid({
datatype: "local",
height: 100,
colNames: ['Id1', 'Name1', 'Values1'],
colModel: [
{name: 'id1', index: 'id',width: 100},
{name: 'name1',index: 'name',width: 100},
{name: 'values1',index: 'values',width: 200}
],
caption: 'Grid 1',
pager: '#pgrid1'
});
// Creating grid2
jQuery("#grid2").jqGrid({
datatype: "local",
height: 'auto',
colNames: ['Id2', 'Name2', 'Values2'],
colModel: [
{name: 'id2',index: 'id',width: 100},
{name: 'name2',index: 'name', width: 100},
{name: 'values2',index: 'values',width: 200}],
caption: 'Grid 2',
pager: '#pgrid2'
});
// Data for grid1
var mydata1 = [
{id1:"1",name1:"test1",values1:'One'},
{id1:"2",name1:"test2",values1:'Two'},
{id1:"3",name1:"test3",values1:'Three'}
];
// Data for grid2
var mydata2 = [
{id2:"11",name2:"test11",values2:'One1'},
{id2:"21",name2:"test21",values2:'Two1'},
{id2:"31",name2:"test31",values2:'Three1'}
];
// Adding grid data
for (var i = 0; i <= mydata1.length; i++) {
jQuery("#grid1").jqGrid('addRowData',i + 1, mydata1[i]);
jQuery("#grid2").jqGrid('addRowData',i + 1, mydata2[i]);
}
// connect grid1 with grid2
jQuery("#grid1").jqGrid('gridDnD',{connectWith:'#grid2'});
// make grid2 sortable
jQuery("#grid2").jqGrid('sortableRows');
});
</script>
<table id="grid1">
<tr>
<td />
</tr>
</table>
<table id="grid2">
<tr>
<td />
</tr>
</table>
$(文档).ready(函数(){
//创建网格1
jQuery(“#grid1”).jqGrid({
数据类型:“本地”,
身高:100,
colNames:['Id1','Name1','Values1'],
colModel:[
{name:'id1',index:'id',width:100},
{name:'name1',index:'name',width:100},
{名称:'values1',索引:'values',宽度:200}
],
标题:“网格1”,
寻呼机:“#pgrid1”
});
//创建网格2
jQuery(“#grid2”).jqGrid({
数据类型:“本地”,
高度:“自动”,
colNames:['Id2','Name2','Values2'],
colModel:[
{name:'id2',index:'id',width:100},
{name:'name2',index:'name',width:100},
{name:'values2',index:'values',width:200}],
标题:“网格2”,
寻呼机:“#pgrid2”
});
//grid1的数据
变量mydata1=[
{id1:“1”,名称1:“test1”,值1:“一”},
{id1:“2”,name1:“test2”,values1:'Two'},
{id1:“3”,name1:“test3”,values1:'Three'}
];
//grid2的数据
变量mydata2=[
{id2:“11”,name2:“test11”,values2:'One1'},
{id2:“21”,name2:“test21”,values2:'Two1'},
{id2:“31”,name2:“test31”,values2:'Three1'}
];
//添加网格数据
对于(var i=0;i来说,这似乎是jqGrid代码中的一个bug。我认为应该将grid.jqueryui.js
的行从
return d;
到
jquery.jqGrid.src.js
中对应的行的编号为11098。更改后将被修复为正确的
更新:我在trirand论坛上发布了我的帖子,在那里我描述了这个问题以及我的修复建议。我希望Tony能在jqGrid的主代码中包含这个修复
更新2:该错误已经出现在jqGrid的主代码中。Oleg:我得到了您的示例页面,并对其进行了修改,使第一个网格可以排序,如下所示:
我在源代码的末尾添加了这一行:jQuery(“#grid1”).jqGrid('sortableRows');第一个网格不能像第二个网格那样排序,所以我们不能在同一个网格上组合sortableRows和Dnd?你怎么看
<script type="text/javascript">
//<![CDATA[
/*global jQuery */
/*jslint browser: true */
jQuery(function () {
'use strict';
var mydata1 = [ // Data for grid1
{id1: "1", name1: "test1", values1: 'One'},
{id1: "2", name1: "test2", values1: 'Two'},
{id1: "3", name1: "test3", values1: 'Three'}
],
mydata2 = [ // Data for grid2
{id2: "11", name2: "test11", values2: 'One1'},
{id2: "21", name2: "test21", values2: 'Two1'},
{id2: "31", name2: "test31", values2: 'Three1'}
];
// Creating grid1
jQuery("#grid1").jqGrid({
datatype: "local",
data: mydata1,
height: 'auto',
colNames: ['Id1', 'Name1', 'Values1'],
colModel: [
{name: 'id1', index: 'id', width: 100},
{name: 'name1', index: 'name', width: 100},
{name: 'values1', index: 'values', width: 200}
],
caption: 'Grid 1',
pager: '#pgrid1'
});
// Creating grid2
jQuery("#grid2").jqGrid({
datatype: "local",
data: mydata2,
height: 'auto',
colNames: ['Id2', 'Name2', 'Values2'],
colModel: [
{name: 'id2', index: 'id', width: 100},
{name: 'name2', index: 'name', width: 100},
{name: 'values2', index: 'values', width: 200}
],
caption: 'Grid 2',
pager: '#pgrid2'
});
// connect grid1 with grid2
jQuery("#grid1").jqGrid('gridDnD', {connectWith: '#grid2'});
// make grid2 sortable
jQuery("#grid2").jqGrid('sortableRows');
**jQuery("#grid1").jqGrid('sortableRows');**
});
//]]>
</script>
//
<script type="text/javascript">
//<![CDATA[
/*global jQuery */
/*jslint browser: true */
jQuery(function () {
'use strict';
var mydata1 = [ // Data for grid1
{id1: "1", name1: "test1", values1: 'One'},
{id1: "2", name1: "test2", values1: 'Two'},
{id1: "3", name1: "test3", values1: 'Three'}
],
mydata2 = [ // Data for grid2
{id2: "11", name2: "test11", values2: 'One1'},
{id2: "21", name2: "test21", values2: 'Two1'},
{id2: "31", name2: "test31", values2: 'Three1'}
];
// Creating grid1
jQuery("#grid1").jqGrid({
datatype: "local",
data: mydata1,
height: 'auto',
colNames: ['Id1', 'Name1', 'Values1'],
colModel: [
{name: 'id1', index: 'id', width: 100},
{name: 'name1', index: 'name', width: 100},
{name: 'values1', index: 'values', width: 200}
],
caption: 'Grid 1',
pager: '#pgrid1'
});
// Creating grid2
jQuery("#grid2").jqGrid({
datatype: "local",
data: mydata2,
height: 'auto',
colNames: ['Id2', 'Name2', 'Values2'],
colModel: [
{name: 'id2', index: 'id', width: 100},
{name: 'name2', index: 'name', width: 100},
{name: 'values2', index: 'values', width: 200}
],
caption: 'Grid 2',
pager: '#pgrid2'
});
// connect grid1 with grid2
jQuery("#grid1").jqGrid('gridDnD', {connectWith: '#grid2'});
// make grid2 sortable
jQuery("#grid2").jqGrid('sortableRows');
**jQuery("#grid1").jqGrid('sortableRows');**
});
//]]>
</script>