2010-12-20 162 views
3

我想通過JavaScript手動應用搜索到我的jqGrid。我試過一個指南here,但似乎無法讓它完全正常工作。 在網格設置中,我有一個名稱爲'error_column'的列,我想在查找字符串'Test'時執行搜索。jqGrid客戶端搜索

這是我到目前爲止有:

var filter = { "field": "error_column", 'oper': 'eq', "data": 'Test' }; 
$("Grid2").jqGrid('setGridParam', { search: true, postData: { filters: filter} }) 
$("Grid2").trigger('reloadGrid'); 

當我點擊,這是必然,沒有任何反應按鈕,它會導致任何錯誤。

EDIT 這裏是用於初始化網格的代碼:

jQuery("#Grid2").jqGrid({ 
    datatype: "local", 
    height: 250, 
    colNames: ['NewSubscriberID', 'Conflicting Subscriber ID', 'Error Field', 'Error Message'], 
    colModel: [ 
     { name: 'new_subscriber_id', index: 'new_subscriber_id', width: 120}, 
     { name: 'conflicting_subscriber_id', index: 'conflicting_subscriber_id', width: 170}, 
     { name: 'error_column', index: 'error_column', width: 90, sorttype: "text", search: true}, 
     { name: 'error_type', index: 'error_type', width: 145} 
    ], 
    loadonce: true 
    }); 

我使用本地陣列將數據綁定到網格。

+0

您是否使用高級搜索('multipleSearch:true')?如果您使用工具欄搜索,則無論您是否使用'stringResult:true',都很重要。如果你在你的問題中包含更多的代碼會更好。 – Oleg 2010-12-20 19:47:34

+0

我不使用多個搜索,因爲只需要在一列上搜索數據。我更新了問題以包含初始化代碼。 – 2010-12-20 21:13:20

回答

18

你應該實現搜索單個字段中帶點另一種方式:

var grid = jQuery("#Grid2"); 
var postdata = grid.jqGrid('getGridParam','postData'); 
jQuery.extend (postdata, 
       {filters:'', 
       searchField: 'error_column', 
       searchOper: 'eq', 
       searchString: 'Test'}); 
grid.jqGrid('setGridParam', { search: true, postData: postdata }); 
grid.trigger("reloadGrid",[{page:1}]); 

你可以看到活生生的例子here

修訂:您使用loadonce: truedatatype: "local"在一起。在datatype: "local"的情況下,值loadonce: true將被忽略。如果您確實從服務器獲取數據並使用datatype: "json"datatype: "xml",則loadonce: true將起作用。如果您希望搜索(過濾)不是在本地完成,而是在服務器上完成,則應重置datatype'json''xml'作爲'setGridParam'的附加選項。

+0

男人,這正是我期待的!非常感謝 – 2011-06-16 12:45:13

+0

@Stéphane:我很高興聽到(讀)。不用謝! – Oleg 2011-06-16 13:12:10

+0

這正是我正在尋找的!謝謝! – aknatn 2011-12-19 01:19:16