2010-12-20 152 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