jqGrid возвращает только записи, определенные в rowNum, если используется loadonce: true


Это нормально или я что-то упускаю?

Если я задаю loadonce: true, Моя сетка возвращает только 5 записей.

Но если я изменю его на loadonce: false, сетка получит все записи

Мой код приведен ниже.

$("#leave-detail-grid").jqGrid({
    url:'grid/grid_leave_detail.php',
    datatype: 'xml',
    mtype: 'GET',
    colNames:['Date','Day','Approver','Leave Type','Status','Purpose | Reason'],
    colModel :[
      {name:'start_date', index:'start_date', width:80, editable:false, align:"left", editrules:{required:true}},
      {name:'day', index:'day', width:80, editable:false, align:"left", editrules:{required:true}},
      {name:'sup', index:'sup', width:130, editable:false, align:"left", editrules:{required:true}},
      {name:'desc', index:'desc', width:130, editable:false, align:"left", editrules:{required:true}},
      {name:'status', index:'status', width:80, editable:false, align:"center", editrules:{required:true}},
      {name:'purpose', index:'purpose', width:180, editable:false, align:"left", editrules:{required:true}}    
    ],
    height: 'auto',
    pager: '#leave-detail-pager',
    pgbuttons: true,
    pginput: 'Yes',
    pgtext: 'Yes',
    rowNum:5,
    rowList:[20,40,100,200,400],
    sortname: 'start_date',
    sortorder: 'asc',
    loadonce: true, // to enable sorting on client side
    viewrecords: true,
    gridview: true,
    caption: 'Search Purpose'
});
$("#leave-detail-grid").jqGrid('navGrid',"#leave-detail-pager",
      {edit:false,add:false,del:false,search:true},
      {zIndex:5234},{zIndex:5234},{zIndex:5234},{zIndex:5234}
);
4 5

4 ответа:

Спасибо Джонатан. Как я пропустил эту демонстрацию:)

Я добавляю colModel rowTotal: 2000, значение -1 не работает, это покажет 2000 REC

Затем добавьте следующее в мой серверный код

$totalrows = isset($_REQUEST['totalrows']) ? $_REQUEST['totalrows']: false;
if($totalrows) {
$limit = $totalrows;
}

И чтобы загрузить все записи, нам нужно настроить код сервера, чтобы переопределить параметр rowTotal.

$result = mysql_query("SELECT COUNT(*) AS count FROM leaveform WHERE emp_id='$emp_id'   AND company_id='$company_id'"); 
$row = mysql_fetch_array($result,MYSQL_ASSOC); 
$count = $row['count']; 
$totalrows =  $count;
$limit = $totalrows;

rowNum:5, означает, что сетка будет использовать только 5 строк.

loadonce: true означает, что он будет загружаться только один раз. Он также отключает пейджер.

Исходя из этой конфигурации, эта сетка будет использовать только 5 строк, и поскольку она больше не будет загружаться с сервера, она всегда будет одной и той же 5.

Здесь ссылка на Wiki, которая содержит последнюю документацию по опциям: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options

При использовании loadonce: true сервер должен возвращать все строки. данные должны быть отсортированы по параметрам sortname и sortorder, которые будут отправлены на сервер в виде sidx и sord.

Отобразится первая страница возвращенных данных. Вы по-прежнему сможете использовать локальную подкачку, сортировку и фильтрацию (поиск) данных.

Может быть важно определить параметр sorttype, чтобы обеспечить правильную локальную сортировку данных.

Если у вас еще есть проблема вы должны добавить свой вопрос с ответом XML от сервера. Так что другой читатель Вашего вопроса сможет воспроизвести проблему.

Последнее замечание: вы используете очень странные значения для pginput, и pgtext вариантов jqGrid. Вы должны лучше держать типы опций, описанных в документации.

{ rowNum: 0 } чтобы установить безлимитные строки...