Jquery jqGrid:组合可排序行和gridDnD(重复行)

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

我希望能够将项目从Grid1拖动到Grid2,然后允许用户对Grid2的项目进行排序。sortableRows选项和gridDnd选项单独工作时不会出现问题。当两个集成一起使用并且用户对Grid2中的行进行排序时,这些行将被复制,就像从Grid1拖动一样

使用jQuery1.4.4、jqueryui 1.8.10、jqGrid 4.2 下面是一些示例代码,演示了该问题:

<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>