JQGrid и поиск результатов - PullRequest
0 голосов
/ 14 марта 2012

Я реализовал таблицу JQGrid с loadonce:true следующим образом:

jQuery("#list").jqGrid({
     datatype: 'jsonstring',
     datastr : maVarJSON,
     colNames:['AA','BB', 'CC','DD','EE','FF'], 
     colModel :[ 
            {name:'invid', index:'invid', align:'center'}, 
            {name:'invdate', index:'invdate'},
            {name:'amount', index:'amount', align:'right'}, 
            {name:'tax', index:'tax', align:'right'}, 
            {name:'total', index:'total', align:'right'}, 
            {name:'note', index:'note'} 
     ],
     pager: jQuery('#pager'),
     rowNum: 50,              
     rowList: [50, 100], 
     caption: '',            
     height: 470,
     width: 1000,       
     loadonce: true          
});
jQuery("#list").jqGrid('filterToolbar',{afterSearch: function(){
            var rowsFiltered = jQuery("#list").getRowData();
 }});

Моя проблема:У меня 500 строк в maVarJSON.Я вижу 50 строк и 10 страниц.Я решил отфильтровать свою колонку AA.Только 100 строк принимают этот фильтр.Итак, я вижу 50 строк и 2 страницы.Я хотел бы получить данные 100 строк.(Метод jQuery("#list").getRowData() дает мне только 50 первых строк данных.)

Спасибо

Ответы [ 2 ]

1 голос
/ 17 апреля 2015

Вы будете помещать только искомые строки на всех страницах в объект obj.items:

var obj         = new Object();
var numpages = jQuery(id).getGridParam('lastpage');
obj.items       = new Array();  
var realname = id.split("_");
realname = "input_jqGridPager_" + realname[1];
var curpage = jQuery('#'+realname);
curpage = curpage.children('input');
curpage = curpage[0].value;

for (var i = 1; i <= numpages; i++)
{
    jQuery(id).trigger("reloadGrid",[{page:i}]);

    selRowIds   = jQuery(id).jqGrid ('getRowData'); 
    obj.count       = selRowIds.length;
    for(elem in selRowIds) {
        obj.items.push(selRowIds[elem]);
    }

}
jQuery(id).trigger("reloadGrid",[{page:curpage}]);
0 голосов
/ 14 марта 2012

Метод getRowData получить данные только со страницы current . Если вам нужно получить все данные сетки, вы можете использовать getGridParam, чтобы получить 'data' параметры и получить все данные сетки. Я не очень понимаю, что вы хотите сделать с данными внутри afterSearch обратного вызова. Цель filterToolbar - отобразить данные для пользователя, а не получить интерфейс JavaScript для фильтрации некоторых данных JavaScript.

Кстати, вы можете удалить опцию caption: '', которая используется по умолчанию, удалить loadonce: true, которая будет игнорироваться для локальных данных, включая datatype: 'jsonstring', и заменить опцию pager: jQuery('#pager') на pager: '#pager'. Если вы используете pager: jQuery('#pager'), то jqGrid придется преобразовать его в pager: '#pager' внутри себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...