Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 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'
        });