jqGrid Удаленные данные, сортировка локально - PullRequest
7 голосов
/ 03 февраля 2012

У меня есть таблица, для которой я извлекаю весь набор данных, а затем хочу, чтобы пользователи имели возможность сортировать полученные данные.Я использую следующие атрибуты, но сетка не сортирует.Стоит также упомянуть, что после того, как пользователь нажмет кнопку, я сделаю вызов AJAX, затем мне нужно будет обновить данные из источника, но так как я каждый раз перетаскиваю все данные клиенту, мне не нужно идтиобратно на сервер только для сортировки.

loadonce: true, // to enable sorting on client side
sortable: true //to enable sorting

Любые предложения с благодарностью!

Ответы [ 4 ]

3 голосов
/ 14 июня 2013

Я только что заметил что-то. Вы можете использовать параметр loadComplete при определении сетки.

                    loadComplete: function() {
                                    // add a function here that waits for a short amount of time, like 100msecs
                                    jQuery("#list1").jqGrid('setGridParam', {
                                            datatype:'local',
                                            sortname:'name',
                                            sortorder:'asc',
                                            page:1
                                    }).trigger("reloadGrid");
                    }

Обратите внимание, что я использую свои данные локально, и когда мне нужно обновить, верните тип данных в xml.

Важно: это само по себе не будет работать: вам нужно немного подождать, прежде чем запустить reloadGrid (выполнение строки) В противном случае вы не увидите разницы в выводе.

2 голосов
/ 19 октября 2012

Не совсем понятно, в чем проблема, которую вы можете видеть, но при использовании удаленного источника данных с локальной сортировкой и фильтрацией необходимо учитывать несколько вещей:

  1. Даже если вы выполняете локальную сортировку, вам все равно необходимо выполнять удаленную сортировку, чтобы загруженные удаленные данные соответствовали текущему состоянию сортировки сетки.
  2. Вы не можете изменить значение loadonce после загрузки сетки, но вы можете изменить значение datatype и вызвать перезагрузку с сервера. Сетка по-прежнему будет иметь ваши начальные значения url, которые вы установили для сетки, поэтому все, что вам нужно для запуска:

    $(this).jqGrid('setGridParam', {datatype:'json'}).trigger('reloadGrid');
    
  3. Вы потеряете выбор при перезагрузке с удаленного устройства и даже при локальной сортировке. Чтобы сохранить их, вам нужно добавить обработчики, которые будут сохранять выбор, выполнить перезагрузку и затем заново установить эти выборки.

Более подробную информацию о том, как это сделать, вы можете найти здесь: http://articles.firstclown.us/post/jqgrid-configuration-for-remote-data-loading-with-local-sorting-and-filtering

2 голосов
/ 27 августа 2012

Я не уверен, но мне кажется, что вы хотите добиться своей сортировки локально, тогда как поиск выполняется удаленно.У меня было такое же требование, и я сделал это так: Сделать «Поиск» удаленным, а все остальное (сортировка, разбиение на страницы и т. Д.) Локальным в jqGrid

1 голос
/ 15 декабря 2017

Мне нужно обновить / загрузить удаленные данные, тогда как все остальные операции выполняются локально.Тогда вот как я добиваюсь своей потребности.

Подготовьте jqGrid с типом данных local

$("#jqGridView").jqGrid({
     //url: originalUrl,// Original line
     //datatype: "json",// Original line
     datatype: "local", // For local sorting
     sortable: true,    // I want local sorting for all columns
     colNames: [...],
     colModel: [...],
     //...
});

Затем вызовите эту функцию при (пере) загрузке / поиске:

function reloadJqGrid() {
    var urlForSearch = "xxx"; // modify your search URL (if required)
    $.get(urlForSearch, function (data) {
        $("#jqGridView").jqGrid('setGridParam',
            {
                datatype: 'local',
                data: data.Payload //My URL response json is in JSend format, thus storing the array in "data.Payload". You may simply use "data"
            })
            .trigger("reloadGrid");
    });
}

Надеюсь, что это поможет!

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