jqgrid 中是否有用于添加高级过滤器以发布数据的 api? [英] is there an api in jqgrid to add advanced filters to post data?
问题描述
我看到在这段代码中,你可以通过在你的 javascript 中设置 postdata 过滤器.
i see how in this code, you can preset postdata filters by have this in your javascript.
postData: {
filters:'{"groupOp":"AND","rules":['+
'{"field":"invdate","op":"gt","data":"2007-09-06"},'+
'{"field":"invdate","op":"lt","data":"2007-10-04"},'+
'{"field":"name","op":"bw","data":"test"}]}'
}
是否有任何 API 可以让您构建它.比如:
is there any API that allows you to build this up. Something like:
jqgrid("#grid").addPostDataFilters("AND");
jqgrid("#grid").addFilteritem("field", "cn", "value");
jqgrid("#grid").addFilteritem("field1", "eq", "value2");
帮助生成到顶部的 postdata 过滤器代码??
to help generate to top postdata filter code ??
我试过了,但它似乎不起作用:
i tried this but it doesn't seem to work:
.jqGrid("setGridParam", { editurl: "/Project/UpdateMe",
ondblClickRow: function (rowid) {
editProject(rowid); // window.location.href="/Project/Detail/"+rowid;
}
});
var grid = $("#grid");
var f = { groupOp: "AND", rules: [] };
f.rules.push({ field: "Name", op: "cn", data: "volat" });
grid.p.search = f.rules.length > 0;
$.extend(grid.p.postData, { filters: JSON.stringify(f) });
更新:
我现在有这个工作(感谢 Oleg)但如果由于某种原因查找"按钮出现空白(即使我确实设置了高级过滤器)我添加了一张图片
Update:
I have this working now (thanks to Oleg) but ifor some reason the Find button somethng comes up with blank (even thought i do have an advanced filter set) i have added a picture
推荐答案
过滤器
filters:'{"groupOp":"AND","rules":[{"field":"invdate","op":"gt","data":"2007-09-06"},{"field":"invdate","op":"lt","data":"2007-10-04"},{"field":"name","op":"bw","data":"test"}]}'
您在问题中包含的内容被序列化为对象的 JSON 版本
which you included in the question is serialized to JSON version of the object
var myfilter = {
groupOp: "AND",
rules: [
{ field: "invdate", op: "gt", data: "2007-09-06" },
{ field: "invdate", op: "lt", data: "2007-10-04" },
{ field: "name", op: "bw", data: "test" }
]
}
可以很容易地动态构造:
which can be easy constructed dynamically:
// addPostDataFilters("AND");
var myfilter = { groupOp: "AND", rules: []};
// addFilteritem("invdate", "gt", "2007-09-06");
myfilter.rules.push({field:"invdate",op:"gt",data:"2007-09-06"});
// addFilteritem("invdate", "lt", "2007-10-04");
myfilter.rules.push({field:"invdate",op:"lt",data:"2007-10-04"});
// addFilteritem("name", "bw", "test");
myfilter.rules.push({field:"name",op:"bw",data:"test"});
// generate to top postdata filter code
var grid = $("#list");
grid.jqGrid({
// all prarameters which you need
search:true, // if you want to force the searching
postData: { filters: JSON.stringify(myfilter)}
});
如果网格已经存在,您想使用可以使用的设置重新加载网格
if the grid already exist you want to reload the grid with the settings you can use
grid[0].p.search = myfilter.rules.length>0;
$.extend(grid[0].p.postData,{filters:JSON.stringify(myfilter)});
grid.trigger("reloadGrid",[{page:1}]);
相反.大多数网络浏览器都原生支持 JSON.stringify
函数,但可以肯定的是你应该在你的页面上包含 json2.js.
instead. The function JSON.stringify
is supported by the most web browsers natively, but to be sure
you should include json2.js on your page.
这篇关于jqgrid 中是否有用于添加高级过滤器以发布数据的 api?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!