Как показать все строки в jqGrid? - PullRequest
47 голосов
/ 06 августа 2009

jqGrid предоставляет свойство rowNum, где вы можете установить количество строк, отображаемых для каждой страницы. Как настроить сетку для отображения ВСЕХ строк?

Сейчас я просто устанавливаю rowNum на что-то действительно высокое, например <%= int.MaxValue %>, но мне интересно, есть ли лучший способ.

Ответы [ 14 ]

53 голосов
/ 13 октября 2009

В последней версии jqGrid вы можете установить rowNum на -1 , чтобы указывать сетке всегда отображать все строки:

rowNum: -1

См. Последнюю документацию jqGrid здесь .

В частности:

Устанавливает, сколько записей мы хотим просмотреть в сетке. Этот параметр передается в URL для использования серверной подпрограммой, получающей данные. Обратите внимание: если вы установите для этого параметра значение 10 (то есть получите 10 записей), а ваш сервер вернет 15, то будут загружены только 10 записей. Установите для этого параметра значение -1 (неограниченно), чтобы отключить эту проверку.

<ч />

Обновление

К сожалению, это поведение было нарушено в jqGrid 3.6.3. Согласно это сообщение от Тони :

Да, это правда. Причина в новом введенном свитке: 1. В будущем мы исправим это поведение.

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

В настоящее время все, что я могу порекомендовать, это установить для rowNum очень большое число, чтобы имитировать поведение -1.

<ч />

Вы также можете попробовать предлагаемое ниже решение whatispunk с использованием rowNum: ''. Однако я попытался сделать это на сетке, содержащей локальные данные (loadonce: true). При попытке сортировки строк все локальные данные сетки исчезнут. Так что это решение, похоже, не работает для сеток с локальными данными, если только этот дефект не был исправлен в более поздней версии jqGrid (я тестировал его на jqGrid 3.8.2). Если у вас есть отзывы, пожалуйста, оставьте комментарий ниже!

<ч /> Обновление - 16 апреля 2014 г.

Согласно команде jqGrid это сейчас исправлено:

Я добавил поддержку для установки различных значений отображения в поле выбора пейджера, включая -1 для всех.

Однако у меня не было возможности проверить исправление. Предположительно это изменение будет в следующей версии после jqGrid 4.6.0.

9 голосов
/ 10 октября 2009

jqgrid (3.5 в любом случае), похоже, не имеет элегантного встроенного способа сделать это. Лучшее, что я нашел на данный момент, - это добавить что-то вроде следующего в ваши параметры сетки:

rowList:[10,20,30,100000000],
loadComplete: function() {
    $("option[value=100000000]").text('All');
},

Где 100000000 - это произвольно большее число, чем максимальное количество строк, которое вы когда-либо будете возвращать, а строка option [value =] означает, что ваш пользовательский интерфейс выглядит немного лучше. Дженки, но у меня работает.

4 голосов
/ 28 ноября 2013

Это работает:

// Step1 - defines the rows
jqGridOptions.rowList =[10, 50, 100, 500, 'All'];
...
...
// Step2 - Change the 'All' to a meaningful value 
loadComplete: function (data) {
   $(".ui-pg-selbox option[value='All']").val(1000);
}
4 голосов
/ 11 августа 2009

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

если вы хотите иметь список строк, но также можете показать все, сделайте что-то подобное в свойствах сетки

jQuery("#statement_mods").jqGrid({
  rowList:['ALL',30,50,100,200]
});

и затем в коде серверной части убедитесь, что вы игнорируете параметр row, если GET ['row'] = 'ALL'

2 голосов
/ 26 января 2016

настройка rowNum:-1 добилась цели для меня

2 голосов
/ 06 декабря 2012

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

Сделайте что-то вроде:

    // Get the total number of rows and delete space between numbers (Split the content of the div depending of the language (for me french)

var val=jQuery("#pager_right div").text().split('sur')[jQuery("#pager_right div").text().split('sur').length-1].split(' ').join('');

    // And do the appending if the option isn't already added

if(!$(".ui-pg-selbox option[value='"+val+"']").length > 0)
    jQuery(".ui-pg-selbox").append($('<option></option>').val(val).html(val));
1 голос
/ 27 декабря 2013

разрешено с простым изменением: rowNum: inputDataArray.length

где inputDataArray - это массив, который я предоставляю Grid.

1 голос
/ 05 сентября 2013

У меня это работает:

$('#bla').jqGrid({
        ...
        'rowNum'      : 0,
        'loadOnce'    : true,
        'loadComplete': function(data) {
            $(this).jqGrid('setGridParam', 'rowNum', data.total);
        },
        ...
});

Работает с и без опции loadOnce, установленной в true. Обратите внимание, что сначала вы должны установить для параметра rowNum значение 0, если вы не включите этот параметр, он по-прежнему будет отображать 20 записей по умолчанию. Кроме того, я предполагаю, что вы возвращаете общее количество строк с сервера в задокументированном формате чтения JSON.

1 голос
/ 24 мая 2012
Jqgrid.PagerSettings.PageSize = Max Row you want to display;
Jqgrid.ToolBarSettings.ToolBarPosition = ToolBarPosition.Hidden;
0 голосов
/ 17 июля 2018
loadComplete: function (data) {
                //set our "ALL" select option to the actual number of found records
                $(".ui-pg-selbox option[value='ALL']").val(data.records);
}

Это изменяет параметр «ВСЕ» на фактическое количество записей в наборе данных.

...