Как показать все строки в jqGrid?
jqGrid предоставляет свойство rowNum
, где вы можете установить количество строк для отображения для каждой страницы. Как настроить сетку только для отображения всех строк?
Сейчас я просто устанавливаю rowNum
на что-то действительно высокое, как <%= int.MaxValue %>
, но мне интересно, есть ли лучший способ.
Ответы
Ответ 1
В последней версии jqGrid вы можете установить rowNum на -1, чтобы команда всегда отображала все строки:
rowNum: -1
См. последнюю документацию jqGrid здесь.
В частности:
Устанавливает, сколько записей мы хотим просмотреть в сетке. Этот параметр передается URL-адресу для использования программой-сервером, получающей данные. Обратите внимание: если вы установите этот параметр на 10 (то есть получите 10 записей), а ваш сервер вернется 15, тогда будет загружено только 10 записей. Установите этот параметр равным -1 (без ограничений), чтобы отключить эту проверку.Забастовкa >
Update
К сожалению, это поведение было нарушено в 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.
Ответ 2
jqgrid (3.5 в любом случае), похоже, не имеет элегантного встроенного способа сделать это. Самое лучшее, что я нашел до сих пор, - добавить в параметры сетки что-то вроде следующего:
rowList:[10,20,30,100000000],
loadComplete: function() {
$("option[value=100000000]").text('All');
},
Где 100000000 - это какое-то сколь угодно высокое число, чем максимальное количество строк, которые вы когда-либо возвращаете, а строка [value =] - это ваш пользовательский интерфейс выглядит немного лучше. Дженки, но работает для меня.
Ответ 3
если вы вообще не хотите использовать пейджинг, а затем измените код на стороне сервера, чтобы просто вернуть все строки. не используйте параметр rows вообще.
если вы хотите иметь список строк, но также имеете возможность показать все, а затем сделать что-то подобное в свойствах сетки
jQuery("#statement_mods").jqGrid({
rowList:['ALL',30,50,100,200]
});
а затем в коде serveride убедитесь, что вы игнорируете параметр rows, если GET ['rows'] = 'ALL'
Ответ 4
Это работает:
// 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);
}
Ответ 5
Если вы установили разбивку на страницы на панели навигации, вы также можете получить доступ к общему количеству строк, написанных в правом нижнем углу сетки, а затем добавить к сгенерированной опции 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));
Ответ 6
настройка rowNum:-1
сделала трюк для меня
Ответ 7
Jqgrid.PagerSettings.PageSize = Max Row you want to display;
Jqgrid.ToolBarSettings.ToolBarPosition = ToolBarPosition.Hidden;
Ответ 8
У меня это работает:
$('#bla').jqGrid({
...
'rowNum' : 0,
'loadOnce' : true,
'loadComplete': function(data) {
$(this).jqGrid('setGridParam', 'rowNum', data.total);
},
...
});
Это работает с параметром loadOnce
и без него равным true. Обратите внимание, что вам нужно сначала установить параметр rowNum
в 0, если вы не укажете этот параметр, он по умолчанию будет показывать 20 записей.
Кроме того, я предполагаю, что вы возвращаете полные строки с сервера в документальном формате чтения JSON.
Ответ 9
разрешил его с простым изменением:
rowNum: inputDataArray.length
где inputDataArray - это массив, который я предоставляю Grid.
Ответ 10
Вы также можете перейти в jquery.jqGrid.js и изменить "rowNum: 20" на "rowNum: Some-Really-Large-Number". Когда вы определяете свой jqGrid, не указывайте rowNum. Затем верните весь набор данных обратно в jqGrid.
Ответ 11
Установка rowNum: '' вы получаете все строки.
Ответ 12
Даже если в документе все еще появляется, что вы не можете установить rowNum на -1 из jqGrid 4.5.4, он снова работает (возможно, в более ранней версии).
Ответ 13
По умолчанию сетка JQ показывает 20 строк Max, если вы используете не используя разбивку на страницы:
// To over come with this problem ,you can just write the bold mark
(rowNum:10000,):
$("#MasterDataDefinationGrid").jqGrid({
url: 'FetchData.aspx/GetDataFromDB',
datatype: 'json',
mtype: 'POST',
height: 300,
autowidth: true,
serializeGridData: function (postData) {
return JSON.stringify(postData);
},
ajaxGridOptions: { contentType: "application/json" },
loadonce: true,
colNames: [Your column names],
colModel: [Your model],
formatter: 'actions',
pager: '#MasterDataDefinationPager', pgbuttons: false,pgtext:false,
multiselect: false,
ignoreCase: true,
**rowNum: 10000,**
loadtext: 'Loading ...',
gridview: true,
hidegrid: false,
jsonReader: {
page: function (obj) { return 1; },
total: function (obj) { return 1; },
records: function (obj) { return obj.d.length; },
root: function (obj) { return obj.d; },
repeatitems: false,
id: "0"
},
caption: 'Data'
});