2010-07-08 60 views

回答

0

嘗試掛鉤afterShowSearch事件,您將更新網格標題。從文檔:

此事件(如定義)顯示在搜索對話框後

+0

但是,當你使用toolbarSearch時會觸發嗎? – 2010-07-08 15:45:32

+0

啊......不,不。在這種情況下,請查看'afterSearch',來自:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:toolbar_searching – 2010-07-08 15:55:22

3

我發現你並不真的需要有搜索後的事件每次。在每個搜索請求中,網格中的數據將被重新加載。所以你可以使用像beforeRequest,loadBeforeSend,serializeGridData,gridCompleteloadComplete這樣的事件。

從您的標題示例我可以假設您使用「高級搜索」。我只想證明了可行的解決方案的主要思想,所以我選用loadComplete實現捕獲變化:

jQuery('#list').jqGrid({ 
    // ... 
    loadComplete: function(data) { 
     var postData = jQuery('#list').getGridParam("postData"); 
     var newCapture = "Title"; 
     if (postData._search === true && typeof postData.filters !== "undefined") { 
      var filters = jQuery.parseJSON(postData.filters); 
      newCapture = "Title: ["; 
      var rules = filters.rules; 
      for (var i=0; i<rules.length; i++) { 
       var rule = rules[i]; 
       var op = rule.op; // the code name of the operation 
       if (jQuery.fn.searchFilter && jQuery.fn.searchFilter.defaults && 
        jQuery.fn.searchFilter.defaults.operators) { 
        // find op description 
        var operators = jQuery.fn.searchFilter.defaults.operators; 
        for (var j=0; j<operators.length; j++) { 
         if (operators[j].op === rule.op) { 
          op = operators[j].text; 
          //op = $.jgrid.search.odata[j]; 
          break; 
         } 
        } 
       } 
       newCapture += rule.field + " " + op + " '" + rule.data + "'"; 
       if (i+1 !== rules.length) 
        newCapture += ", "; 
      } 
      newCapture += "]"; 
     } 
     jQuery('#list').setCaption(newCapture); 
    } 
}); 

如果不使用「高級搜索」,你應該searchFieldsearchOpersearchString,而不是filters到建立基於搜索食堂的網格標題。

目前在這個例子中,我沒有使用本地化名稱進行操作,但很明顯,可以做到這一點。

+0

@Oleg - 很好的解決方案。我不明白你最後評論我如何在標題欄中包含工具欄搜索標準。它似乎像工具欄搜索只是將實際的字段和值添加到發佈數據。因此,如果我在名爲Description的描述字段上搜索「test」,我只會在postdata中看到一個名爲Description的元素,其值爲「test」。我沒有看到任何「searchField」,「searchOper」和「searchString」。另外,你會如何支持多個工具欄的搜索? – leora 2011-03-11 11:15:41

+0

@Oleg - 關於我上面的評論的任何想法? – leora 2011-03-11 18:08:44

+0

@ooo:當前代碼將文本「標題:[...]放置在網格捕捉中。文本」標題「是英文的,因此它不是本地化的。[']'中的文本包含本地化文本,如德語中的「beginnt mit」,而不是英語中的「beginning with」。在最後一句中,我解釋說可以編寫代碼,選擇「標題」也與語言相對應。使用相應列的列標題如果將代碼包含在一個網格中,您將看到我的意思 – Oleg 2011-03-11 19:11:52