it-roy-ru.com

Как показать все строки в jqGrid?

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

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

47
Jon Erickson

В последней версии 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.

53
Justin Ethier

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

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

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

8
C Dolan

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

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

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

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

4
Yashvit

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

// 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);
}
3
Aneesh Vijendran

настройка rowNum:-1 сделала свое дело для меня

2
Salty

Если вы установили пагинацию на панели навигации, вы также можете получить доступ к общему количеству строк, записанных в правом нижнем углу сетки, а затем добавить к сгенерированной опции 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));
2
JULIEN

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

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

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

1
lotjuh
Jqgrid.PagerSettings.PageSize = Max Row you want to display;
Jqgrid.ToolBarSettings.ToolBarPosition = ToolBarPosition.Hidden;
1
Ankur

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

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

1
Nilesh Shukla

Вы также можете перейти в jquery.jqGrid.js и изменить «rowNum: 20» на «rowNum: Some-Really-Large-Number». Когда вы определяете свой jqGrid, не указывайте rowNum. Затем верните весь набор данных обратно в jqGrid.

0
Ron
loadComplete: function (data) {
                //set our "ALL" select option to the actual number of found records
                $(".ui-pg-selbox option[value='ALL']").val(data.records);
}

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

0
Chris

Даже если в документе все еще отображается, что вы не можете установить rowNum в -1 с jqGrid 4.5.4, это работает снова (возможно, и в более ранней версии).

0
DevAntoine

По умолчанию сетка JQ показывает максимум 20 строк, если вы не используете нумерацию страниц:

// 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'
        });
0
VCody

Установка rowNum: '' вы получите все строки.

0
mikesigs