2013-03-05 7 views
0

У меня есть таблица, заполненная данными, которые я хочу сортировать и фильтровать.jqGrid reload server

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

Я использую trigger("reloadGrid",[{current:true}]), устанавливая тип данных в формате JSON, так что данные извлекаются с сервера, в функции autorefresh, и сортировки и фильтрации варианты используются в методе loadcomplete с setTimeout, как объяснено в других вопросах StackOverflow ,

Это работает, но каждый раз, когда сетка обновляется, я вижу в течение одной секунды сетку с полными данными, не отсортированную и не фильтрованную, а затем данные локально сортируются/фильтруются.

Учитывая, что я хочу в 5 секунд автоматическое обновление, есть способ, я могу предотвратить метод reloadGrid отображать полную информацию, когда есть запрос на сервер, но ждать reload в loadComplete для обновления дисплея?

Reload используется в autorefresh функции:

$("#MyGrid").jqGrid("setGridParam",{url:"list.php", datatype:"json"}).trigger("reloadGrid",[{current:true}]); 

Модель:

jQuery("#MyGrid").jqGrid({ 
    url:'list.php', 
    datatype: "json", 
    loadonce:true, 
    ... 
    loadComplete: function(){ 
    if ($("#MyGrid").jqGrid("getGridParam", "datatype") !== "local") { 
     setTimeout(function() { 
     $("#MyGrid").jqGrid("setGridParam",{search:srch,postData:post}); 
     }) 
    }; 
    } 
+0

Почему с помощью '' setTimeout' внутри loadComplete'? Можете ли вы ссылаться на вопрос, где вы получили эту идею? – david

+0

Привет! Вопрос, где я получил эту идею, можно найти здесь: http://stackoverflow.com/a/14468880/2136486. Если я не ошибаюсь, делая это, перезагрузка внутри loadcomplete ожидает, что данные с сервера будут правильно восстановлены. Я прав ? – user2136486

ответ

0

Вы можете использовать функцию setInterval JavaScript, чтобы сделать автоматическое обновление

var grid = $("#list"), 
intervalId = setInterval(
    function() { 
     grid.trigger("reloadGrid",[{current:true}]); 
    }, 
    60000); // Every 1 min 

остановить сетки перезаряжает вас может использовать еще одну функцию JavaScript:

clearInterval(intervalId); 

В «reloadGrid» я использую менее известный параметр current: true, который описан здесь, чтобы сохранить текущий выбор в сетке.

Вы можете увидеть Reload Jqgrid by given interval

Смежные вопросы