2011-06-07 61 views
0

根據jqGrid wiki頁面的說法,「每次服務器請求後立即執行此事件。」loadComplete事件在jqGrid中的每個過濾器操作上被觸發?

在我的網格中,我在頂部有一個過濾器工具欄。

$(table_data_obj).jqGrid('filterToolbar', {stringResult:true, searchOnEnter:true, autosearch:true, defaultSearch:'cn'}); 

和loadComplete功能,如:

loadComplete: function(data) { 
data_processing(data); 
} 

每當,我本地過濾格網的數據(沒有新的服務器請求),data_processing(數據)被調用。我不想要這種行爲。我怎樣才能確保data_processing(data)只被新的服務器請求調用。

編輯 我想做一些數據處理,每次從服務器獲取新數據。有更好的地方嗎?

+0

我的黑客解決方案:檢查data_processing(data)中的data.rows [0] .cell。單元對象僅存在於服務器響應數據中。 – understack 2011-06-08 06:27:49

回答

0

使用firebug觀看服務器的請求。檢查參數,你會知道哪些值被張貼。在事件中使用警報來確定拋出服務器請求的具體事件

+0

沒有新的服務器請求,如前所述。它只是在過濾數據時被觸發的事件。 – understack 2011-06-07 20:42:08

+0

ur函數data_processing()將最終在每個過濾器上的loadcomplete()方法上調用。 gridcomplete()可以用於所有的數據。首先你說沒有服務器請求,然後你說是服務器請求(檢查你的編輯) – MLS 2011-06-07 20:51:33

+0

我想data_processing()在每個新的服務器請求被調用,而不是過濾數據。而gridcomplete也被稱爲過濾。 – understack 2011-06-08 03:53:19

1

您沒有發佈jqGrid定義,也沒有描述爲什麼有一些時間來自服務器的數據以及本地的某個時間。如果你需要從服務器重新加載數據,我想你會使用loadonce:true選項,並將某個時間重置datatype jqGrid的參數爲原始值'json'或'xml'。如果是你的情況,我會建議你測試datatype參數是否是'本地'或不。您可以使用if like if ($("#list").jqGrid('getGridParam','datatype') !== 'json') {/* local data */}或僅使用$("#list")[0].p.datatype而不是$("#list").jqGrid('getGridParam','datatype')。如果數據從服務器加載,datatype將是'json'(或'xml')。 處理loadComplete事件datatype將更改爲'本地',如果您使用loadonce:true選項。