jqGrid 是一个流行的 jQuery 插件,用于创建功能丰富的表格数据展示和操作界面。过滤器功能允许用户对表格数据进行筛选,只显示符合特定条件的数据行。
在 jqGrid 中,可以通过以下几种方式以编程方式设置过滤器:
setGridParam
和 trigger("reloadGrid")
$("#grid_id").jqGrid('setGridParam', {
postData: {
filters: JSON.stringify({
groupOp: "AND",
rules: [
{ field: "name", op: "cn", data: "John" },
{ field: "age", op: "gt", data: "25" }
]
})
}
}).trigger("reloadGrid");
filterToolbar
方法$("#grid_id").jqGrid('filterToolbar', {
stringResult: true,
searchOnEnter: false,
defaultSearch: "cn"
});
// 以编程方式设置过滤器输入框的值
$("#gs_name").val("John");
$("#grid_id")[0].triggerToolbar();
searchGrid
方法$("#grid_id").jqGrid('searchGrid', {
multipleSearch: true,
multipleGroup: true,
showQuery: true,
sopt: ['cn', 'eq', 'bw'],
rules: [
{ field: "name", op: "cn", data: "John" },
{ field: "age", op: "gt", data: "25" }
]
});
groupOp
: 逻辑操作符,可以是 "AND" 或 "OR"rules
: 过滤规则数组,每个规则包含:field
: 要过滤的列名op
: 操作符 (如 "eq" 等于, "ne" 不等于, "lt" 小于, "le" 小于等于, "gt" 大于, "ge" 大于等于, "bw" 开始于, "bn" 不开始于, "in" 在...中, "ni" 不在...中, "ew" 结束于, "en" 不结束于, "cn" 包含, "nc" 不包含)data
: 要匹配的值问题1: 过滤器不生效
问题2: 服务器端未接收到过滤参数
postData
正确设置loadonce
是否为 false (如果为 true 则所有数据已加载到客户端)问题3: 多条件组合过滤逻辑错误
groupOp
设置是否符合预期// 复杂过滤条件示例
var myFilter = {
groupOp: "OR",
groups: [
{
groupOp: "AND",
rules: [
{ field: "status", op: "eq", data: "active" },
{ field: "department", op: "eq", data: "sales" }
]
},
{
groupOp: "AND",
rules: [
{ field: "status", op: "eq", data: "pending" },
{ field: "priority", op: "ge", data: "3" }
]
}
]
};
$("#grid_id").jqGrid('setGridParam', {
postData: {
filters: JSON.stringify(myFilter)
}
}).trigger("reloadGrid");
通过以上方法,您可以灵活地在 jqGrid 中以编程方式设置各种复杂的过滤条件。
没有搜到相关的文章