2012-03-14 2 views
0

Я реализовал таблицу JQGrid с loadonce:true так:JQGrid и Результат поиск

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 первых данных по строкам.)

Благодарности

ответ

0

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

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

+0

Спасибо за ваш ответ. Фактически, объекты (представленные строками; 1 объект = 1 строка) также отображаются в div-карте google в моем приложении. Поэтому я хотел показать/скрыть эти объекты, которые принимают/не принимают фильтр. – livoo

+0

@ user1268560: Извините, но я до сих пор не понимаю, чего вы хотите. Чтобы «принять/не принимать фильтр», вы должны использовать, вероятно, [beforeSearch] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:toolbar_searching#calling_convention), а не 'afterSearch'. Вы можете анализировать * фильтр *, а не данные. См. Пример в [ответе] (http://stackoverflow.com/a/4184035/315935). Если у вас есть проблемы с 'rowNum: 50', вы можете увеличить значение. В любом случае я бы рекомендовал вам добавить «gridview: true» для лучшей производительности сетки. – Oleg

+0

Я добавил gridview в true. Этот пример помог мне сделать то, что я хотел. Большое спасибо. – livoo

1

Вы подтолкнете только искали строки на все страницы к 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}]); 
Смежные вопросы