2013-03-05 70 views
0

我充滿了我要進行排序和篩選數據的表。jqGrid的重載服務器

我實現了自動刷新功能,每次從服務器加載數據,但我想恢復排序和篩選選項,我能做到的。

我使用trigger("reloadGrid",[{current:true}]),設置數據類型爲JSON,使得數據被從服務器檢索,在autorefresh功能,以及排序和過濾選項在loadcomplete方法使用具有setTimeout,如在其他計算器問題解釋。

這樣的作品,但每個網格刷新的時候,我一秒鐘的完整的數據,沒有排序,也不過濾,然後將數據在本地進行排序/過濾電網中看到。

假設我想在一個5秒自動刷新,有沒有辦法可以防止reloadGrid方法從時,有一個服務器請求顯示完整的數據,但在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

爲什麼在loadComplete裏面使用'setTimeout'?你能鏈接到你有什麼想法的問題嗎? – david 2013-03-05 18:58:49

+0

嗨!這裏也有我這種想法的問題可以在這裏找到:http://stackoverflow.com/a/14468880/2136486。如果我沒有錯,這樣做,裏面loadcomplete重載正在等待來自服務器的數據被正確檢索。我對麼 ? – user2136486 2013-03-05 23:50:26

回答

0

您可以使用setInterval的JavaScript函數做自動刷新

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

停止電網重載你可以使用一個以上的JavaScript函數:

clearInterval(intervalId); 

在「reloadGrid」我使用較少已知參數的電流:在此所說明保存在網格當前選擇真。

你可以看到Reload Jqgrid by given interval