2015-08-30 54 views
0

我定義爲jqGrid列如下任意指數(列名)的jqGrid搜索

 name : 'idmycolumn', 
     index : 'idmycolumn', 
     width : 80, 
     align : 'right', 
     search : true, 

ID名稱(ìdmycolumn)是罰款,我的SQL更新操作,但不與搜索。如何更改搜索操作的名稱(作爲另一個ID,比如說idmysearch)?

所以基本上我需要一個不同的SQL列來更新,因爲我需要搜索。有沒有機會這樣做?


進一步澄清如下

  • Oleg的問題,你如何填寫的rowid在網格的?第一列的整數值
  • idmycolumn是否爲rowid?你在列中使用key: true嗎?不,不行rowid
  • 你使用哪種編輯模式?你使用哪種搜索(工具欄搜索,搜索對話框,都)?內聯編輯,工具欄搜索
  • idmycolumn列的排序過程中需要使用哪個名稱?應該通過搜索和排序的列名相同嗎?搜索應該是「idmysearch」,其他任何(排序,..)「idmycolumn」
  • 您是否使用loadonce: true選項? loadonce:默認/假

澄清第二部分:

由於我沒有設置stringResult = true地方(我剛剛檢查)時,defaultfalse。無論如何,該參數是一個很好的提示,謝謝。

但是,我也解析了服務器端的過濾器,這是我當前將idmycolumn替換爲idmysearch的地方。我只想知道在我將過濾器發送到服務器之前,是否可以在客戶端預先替換過濾器名稱。

+0

如何您填寫的rowid在網格? 'idmycolumn'是rowid嗎?你在列中使用'key:true'嗎?您使用哪種編輯模式?您使用哪種搜索(工具欄搜索,搜索對話框,都)?在「** idmycolumn」列進行**排序時,您需要使用哪個名稱?應該通過搜索和排序的列名相同嗎?你是否使用'loadonce:true'選項? – Oleg

+0

感謝您的反饋,以上澄清 –

+1

如果您使用工具欄搜索並且不使用'loadonce:true',那麼還有一個選項。用於搜索的數據格式取決於您使用的'filterToolbar'的選項。 'stringResult'選項的默認值是'false'(我個人總是使用'stringResult:true'格式並處理[filters](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:advanced_searching #選項)在服務器上)。所以這意味着jqGrid只需添加'idmycolumn = searchingValue'作爲附加參數,將其發送到服務器。你有這種情況嗎?你想改變參數的名字嗎? – Oleg

回答

1

解決方案很大程度上取決於您使用的方法。 jqGrid提供了很多選項,可以用來改變方法的行爲或參數的格式,例如發送到服務器。此外,還有許多回調和事件,允許您在發送到服務器之前修改參數。瞭解搜索參數將保存在postData選項內部很重要。所有選項均位於可通過使用$("#gridid").jqGrid("getGridParam")獲得的對象中,或者可以通過使用$("#gridid").jqGrid("getGridParam", "postData")獲得特定選項,例如postData選項。返回的值是jqGrid使用的內部對象的參考。所以你可以修改它,jqGrid將使用自動修改的值。在這種情況下,不需要使用方法setGridParam

因此,您的問題的解決方案可能如下。您添加beforeSearch回調filterToolbar方法,它改變來自idmycolumnidmysearchpostDataidmycolumn屬性:

$("#gridid").jqGrid("filterToolbar", { 
    beforeSearch: function() { 
     var postData = $(this).jqGrid("getGridParam", "postData"); 
     if (postData.hasOwnProperty("idmycolumn")) { 
      postData.idmysearch = postData.idmycolumn; 
      delete postData.idmycolumn; 
     } 
    } 
});