jqgrid multiselect выбирает только строки на текущей странице, если включена подкачка страниц.Как заставить его выделять строки на страницах? - PullRequest
8 голосов
/ 17 января 2011

Я заметил в демонстрационной версии jqgrid (http://www.trirand.com/blog/jqgrid/jqgrid.html> Advanced> Multiselect), что на текущей странице выбираются только строки (видимые), если включена подкачка страниц.

Любые советы о том, как заставить его работать на нескольких страницах. Или какие-то другие альтернативные решения?

Ответы [ 2 ]

3 голосов
/ 30 июля 2012

Я знаю, что этот вопрос довольно пыльный, но недавно мне понадобилась эта функция, и я нашел способ, который я считаю гораздо более чистым.

Вместо того, чтобы прикреплять событие к каждому флажку, почему бы не использовать onSelectRow и onSelectAll события jqGrid? Когда строка выбрана, проверьте, включает ли наш список выбранных строк эту строку (на основе идентификатора). Добавьте его в список, если он не был там и был выбран, удалите его, если он был там и больше не выбран. Если выбраны все строки, выполните их итерацию.

var $grid  = jQuery("#myGrid");
var updateIdsOfSelectedRows = function (id, isSelected) {
    var contains = idsOfSelectedRows.contains(id);
    if (!isSelected && contains) {
        for(var i=0; i<idsOfSelectedRows.length; i++) {
            if(idsOfSelectedRows[i] == id) {
                idsOfSelectedRows.splice(i, 1);
                break;
            }
        }
    }
    else if (!contains) {
        idsOfSelectedRows.push(id);
    }
};

$grid.jqGrid({
    ....
    onSelectRow: function(rowid, status){
        updateIdsOfSelectedRows(rowid, status);
    },
    onSelectAll: function (aRowids, status) {
        var i, count, id;
        for (i = 0, count = aRowids.length; i < count; i++) {
            id = aRowids[i];
            updateIdsOfSelectedRows(id, status);
        }
    },
    ....
 )};

Надеюсь, это поможет другим, ищущим решение.

0 голосов
/ 04 марта 2011

Я предполагаю, что вы хотели бы выбрать несколько строк на одной странице, а затем перейти на другую страницу, возможно, выбрать еще несколько строк и сохранить все эти выделения.

Вам придется обрабатывать события выбора на каждом флажке. Присоедините обработчик событий к each $("#cb_my_grid") и сохраните массив выбранных элементов. Затем, когда вам нужны данные (возможно, когда страница отправлена), вы можете отправить значения в массиве.

...