如何在多列上查询dgrid

时间:2012-08-31 00:17:28

标签: dojo dgrid

是否可以创建一个dgrid查询来搜索多个列上的正则表达式字符串?通常语法指定{column1:“foo”,column2:“foo”},但这将查找column1和column2都是“foo”的行。但我想对两个列使用相同的搜索字符串......这是可能的,我该怎么做?我需要像{column1 ||这样的东西第2栏:“foo”}。

1 个答案:

答案 0 :(得分:5)

您可以像我在回答上一个问题时提到的那样编写自己的函数Is it possible to filter data in a dgrid like you can in a datagrid

或者您可以使用Resource Query Language (RQL)

dgrid查询其商店,例如dojo/store/Memory,默认使用dojo/store/util/SimpleQueryEngine。您需要做的就是使用您选择的 QueryEngine 提供store.queryEngine属性。对于RQL,它看起来像这样(source):

require(["dojo/store/Memory", "rql/js-array", "dgrid/OnDemandGrid"], function(Memory, rql, Grid) {

    var store = new Memory({ data: { /* some data here */}});
    store.queryEngine = rql.query;

    var grid = new Grid({
        store: store,
        columns: { /* some columns here */}
    }, "grid")

});

现在您可以使用RQL语法查询dgrid。要回答您问题的查询:(column1=foo|column2=foo)

请查看我的jsFiddle(http://jsfiddle.net/phusick/VjJBT)。随意使用dgrid本身(有一些预定义的查询)或使用DOH单元测试(打开JS控制台来查看输出)进行分叉和实验:

enter image description here