在search_config文档页面中,我看到有些东西看起来像是允许我指定一个默认值(defaultValue)来填充搜索字段,但我无法让它工作。我指定了一个默认值,但是当我拉出搜索框时,没有任何内容被填充。此外,我正在使用multipleGroup: true
,因此它是高级高级搜索模块,如果这有任何区别。
答案 0 :(得分:6)
我通过浏览源代码来解决这个问题,因为我似乎无法找到维基或其他任何地方记录的功能,我将回答我自己的问题。 jqGrid有一种创建默认搜索模板的方法,它非常有用。希望我的解释对其他人有用。
在创建jqGrid $('#gridDiv').jqGrid('searchGrid', options);
的searchGrid部分时(或在创建navGrid部分$('#gridDiv').jqGrid('navGrid', '#navDiv', {}, {}, {}, {}, searchOptions);
时在searchGrid选项部分中),我们关注两个选项,tmplNames和tmplFilters。
tmplNames只是模板名称应该是的字符串数组。这些将显示为将显示的模板选择框中的文本。类似于["Bob's Template", "Joe's Template"]
。
tmplFilters也是一个字符串数组,但这些字符串是jqGrid在搜索某些内容时发送给php脚本的JSON编码字符串。 (tmplFilters也可以作为对象本身的数组,但我还没试过)所以这样的事情。
{
"groupOp":"AND",
"rules":
[
{"field":"comnumber","op":"ge","data":"19000"},
{"field":"expStatus.expStatID","op":"eq","data":"4"}
]
}
所以这一切实际上非常简单,除了这仍然不包括设置默认模板。这仅适用于设置其他模板以供选择。 jqGrid有一个预定义的默认模板,这是您最初打开搜索时出现的模板。要更改此项,在创建jqGrid之后,您需要使用setGridParam并更改postdata属性
$('#jqGrid').setGridParam({
postData: {
filters: defaultFilter
}
});
其中defaultFilter是与以前相同类型的JSON查询字符串。此外,如果单击“重置”按钮,此默认模板将消失,因此您需要在发生这种情况时再次设置它,这很容易通过向初始jqGrid调用添加onReset函数来实现:
onReset: function () {
$('#jqGrid').setGridParam({
postData: {
filters: defaultFilter
}
});
}
就是这样!通过使用AJAX和一些新按钮,我还能够从本地文件中读取模板,而不是在javascript中定义它们,并且还能够获取当前查询并在文件中创建/覆盖模板。然后他们变得非常有用。