2013-01-25 43 views
0

我有一個PHP腳本來處理許多不同jqGrid的AJAX請求。jqGrid:將loadonce作爲參數添加到AJAX請求中

我使用'sidx'和'sord'參數生成「ORDER BY」語句,並使用'page'和'rows'參數生成「LIMIT」語句。

類似於PHP示例here

問題是,在PHP腳本中,我無法確定當前jqGrid的loadonce參數是否設置。 但是,只有當它沒有設置,我必須過濾返回的數據(頁和行限制)。

我該如何強制jqGrid發送額外的參數? 我不想改變我所有的網格。有沒有全球性的做法?

------編輯------

從這個答案(herehere)我現在得到這個幫助。

$.extend($.jgrid.defaults, { 
    postData: { 
     loadingType: function() { 
      var isLoadonce = $("#list1").jqGrid('getGridParam', 'loadonce'); 
      console.log('isLoadonce: ' + isLoadonce); 
      return isLoadonce ? 'loadAll' : 'loadChunk'; 
     }, 
    }, 
}); 

這可以工作,如果網格的ID爲「list1」。如何在沒有ID的情況下引用當前網格?

------ EDIT 2 ------

這似乎是工作。它看起來有點像黑客。有沒有更好的辦法?

$.extend($.jgrid.defaults, { 
    serializeGridData: function(postData) { 
     var isLoadonce = $(this).jqGrid('getGridParam', 'loadonce'); 
     var newPostData = $.extend(postData, { 
      loadingType: isLoadonce ? 'loadAll' : 'loadChunk' 
     }); 
     return $.param(newPostData); 
    }, 
}); 
+0

你能否提供一個jsfiddle的問題? –

+0

@ Floradu88我不知道我能在jsFiddle中展示給你什麼。我的問題不是網格無法正常工作。但我想知道是否有方法來擴展網格的ajax請求。 – Stahlkocher

回答

0

使用serializeGridData,jqGrid提供了一個事件來修改與請求一起發送的數據。該事件在當前網格的上下文中調用,因此我們可以通過this訪問當前網格。

通過發表$.jgrid.defaults我們可以使所有網格發送loadonce參數作爲額外的請求參數,而無需更改任何網格。

$.extend($.jgrid.defaults, { 
    serializeGridData: function(postData) { 
     var isLoadonce = $(this).jqGrid('getGridParam', 'loadonce'); 
     var newPostData = $.extend(postData, { 
      loadingType: isLoadonce ? 'loadAll' : 'loadChunk' 
     }); 
     return $.param(newPostData); 
    }, 
}); 
2

要傳遞一個額外的參數,你可以添加:

postData: { ExtraDataName: ExtraDataValue }, 

那麼無論什麼時候的jqGrid去得到的數據將通過這個名字對你的控制器。

+0

是的,但這種方式附加值是靜態的。在服務器站點上,我想知道當前網格是否「加載」。 隨着我的第二個「編輯」,我找到了一種方法來存檔這個。我只是不知道這是否是最好的方式。 – Stahlkocher

+0

我不確定我是否理解這個問題?在我上面的例子中,如果你想傳遞loadonce值,你可以設置'ExtraDataName:$(this).jqGrid('getGridParam','loadonce');'' – Mark

相關問題