我想通过JavaScript手动将搜索应用到我的jqGrid。我尝试了一个指南here,但似乎无法让它完全正常工作。 在网格设置中,我有一个名为'error_column'的列,我想在搜索字符串'Test'时执行搜索。
这是我到目前为止所做的:
var filter = { "field": "error_column", 'oper': 'eq', "data": 'Test' };
$("Grid2").jqGrid('setGridParam', { search: true, postData: { filters: filter} })
$("Grid2").trigger('reloadGrid');
当我点击这个绑定的按钮时,没有任何反应,它不会导致错误。
修改 以下是初始化网格的代码:
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 :(得分: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: true
和datatype: "local"
。在loadonce: true
的情况下,将忽略值datatype: "local"
。如果您确实从服务器获取数据并使用datatype: "json"
或datatype: "xml"
,则loadonce: true
将起作用。如果您希望搜索(过滤)不是在本地而是在服务器上进行,则应将datatype
重置为'json'
或'xml'
,作为'setGridParam'
的附加选项。< / p>