jqGrid: объединение sortableRows и gridDnD (повторяющиеся строки) - PullRequest
2 голосов
/ 16 ноября 2011

Я хочу иметь возможность перетаскивать элементы из Grid1 в Grid2, а затем разрешать пользователю сортировать элементы из Grid2.По отдельности, опция sortableRows и gridDnd работают без проблем.Когда обе интеграции используются вместе и пользователь сортирует строки в Grid2, строки дублируются, как если бы они были перетащены из Grid1.

Использование jquery 1.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>

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Кажется, ошибка в коде jqGrid.Я думаю, что нужно изменить строку 392 grid.jqueryui.js с

return d;

на

return false;

Соответствующая строка в jquery.jqGrid.src.js имеетномер 11098. После изменений исходная демоверсия будет зафиксирована на , следующая , которая кажется корректной.

ОБНОВЛЕНО : я отправил сообщение об ошибке на форуме trirand, где я описал проблему и предложил исправить ее.Я надеюсь, что Тони включит исправление в основной код jqGrid.

ОБНОВЛЕНО 2 : ошибка уже исправлена ​​ в основном коде jqGrid.

1 голос
/ 07 марта 2013

Олег: я получил вашу страницу примера и изменил ее, чтобы сделать первую сетку сортируемой так же, как это: я добавил эту строку в конце исходного кода: 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...