jqgrid 中是否有用于添加高级过滤器以发布数据的 api? [英] is there an api in jqgrid to add advanced filters to post data?

查看:8
本文介绍了jqgrid 中是否有用于添加高级过滤器以发布数据的 api?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看到在这段代码中,你可以通过在你的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆