ASP.NET MVC и jqGrid: постоянный множественный выбор - PullRequest
1 голос
/ 09 февраля 2010

У меня есть jqGrid в ASP.NET MVC View с опцией multiselect:true. В сетке отображается более 200 записей, поэтому у меня включена подкачка страниц. Это прекрасно работает, но при переходе от страницы к странице выбор теряется при навигации.

Есть ли хороший, чистый способ сохранить выборки, чтобы они сохранялись во время подкачки?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

user279248 (я знаю, что это старый пост, но это хороший вопрос) - все идентификаторы строк хранятся в массивах selRows в массиве страниц, так что просто итерируйте их, т.е.

for (j=0;j<pages.length;j++) { 
  var selRow = pages[j];
  for (k=0;k<selRow.length;k++) {
   alert('RowID:'+selRow[k]);
  }
}

Надеюсь, это кому-нибудь поможет.

Дейв - через два года ваше решение еще крепче! Спасибо за код. Моя единственная настройка - повышение уровня кода до функций - полезно применять к нескольким сеткам на одной странице.

function maint_chkbxs_oSR(obj_ref, rowid, status, pages) {

        var pageId = $(obj_ref).jqGrid('getGridParam','page');
        var selRows = [];
        if (status) {
            //item selected, add index to array
            if (pages[pageId] == null) {
                pages[pageId] = [];
            }
            selRows = pages[pageId];

            //if (selRows.indexOf(rowid) == -1)
            if ($.inArray(""+rowid,selRows) == -1)
            { selRows.push(rowid); }
        }
        else {
            //item deselected, remove from array
            selRows = pages[pageId];
            var index = $.inArray(""+rowid,selRows);
            if (index != -1) {
                pages[pageId].splice(index, 1);
            }
        }   
    }

    function maint_ckbxs_lC(obj_ref, pages) {

        if (pages[$(obj_ref).jqGrid('getGridParam','page')] != null) {
            var selRows = pages[$(obj_ref).jqGrid('getGridParam','page')];
            var i;
            var limit = selRows.length;
            for (i = 0; i < limit; i++) {
                //$('#grid_bucket').setSelection(selRows[i], true);
                $(obj_ref).jqGrid('setSelection',selRows[i],true);
            }
        }   
    }

Вам просто нужно помнить, чтобы создать выделенный массив страниц для каждой сетки.

2 голосов
/ 10 февраля 2010

Управляется с помощью хитрости javascript:

    var pages = [];
    onSelectRow: function(rowid, status) {
                    var pageId = $('#grdApplications').getGridParam('page');
                    var selRows = [];
                    if (status) {
                        //item selected, add index to array
                        if (pages[pageId] == null) {
                            pages[pageId] = [];
                        }
                        selRows = pages[pageId];

                        if (selRows.indexOf(rowid) == -1)
                        { selRows.push(rowid); }
                    }
                    else {
                        //item deselected, remove from array
                        selRows = pages[pageId];
                        var index = selRows.indexOf(rowid)
                        if (index != -1) {
                            pages[pageId].splice(index, 1);
                        }
                    }
                },

loadComplete: function() {
                if (pages[$('#grdApplications').getGridParam('page')] != null) {
                    var selRows = pages[$('#grdApplications').getGridParam('page')];
                    var i;
                    var limit = selRows.length;
                    for (i = 0; i < limit; i++) {
                        $('#grdApplications').setSelection(selRows[i], true);
                    }
                }
            },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...