【问题标题】:Dojo DataGrid filtering with complexQuery not working使用 complexQuery 进行 Dojo DataGrid 过滤不起作用
【发布时间】:2013-06-22 04:37:09
【问题描述】:

我试图找出过滤器功能不起作用的原因,但我被卡住了。这是我第一次使用 Dojo,但我对那个框架并不熟悉。我正在尝试寻找 2 或 3 个小时,但我找不到解决方案。 我想要的是实现过​​滤器或搜索机制。但它不起作用,但...... 这是我的代码:

dojo.require('dojo.store.JsonRest');
dojo.require('dijit.layout.ContentPane');
dojo.require("dijit.form.Button");
dojo.require('dojox.grid.DataGrid');
dojo.require('dojo.data.ObjectStore');
dojo.require('dijit.form.TextBox');
dojo.require('dojox.data.AndOrReadStore');
dojo.require('dojo._base.xhr');
dojo.require('dojo.json')
dojo.require('dojo.domReady');
dojo.ready(
function(){
    var appLayout = new dijit.layout.ContentPane({
        id: "appLayout"
    }, "appLayout");

    var textBox = new dijit.form.TextBox({
        name: "searchbox",
        placeHolder: "Search ..."
    });

    var filterButton = new dijit.form.Button({
        label: 'Filter',
        onClick: function () {
            searchWord = textBox.get('value');
            query = "id: '"+searchWord
                +"' OR date_A: '"+searchWord
                    +"' OR dateB: '"+searchWord
                +"' OR product: '"+searchword+"'";
        grid.filter({complexQuery: query}, true);
        }
        });

        store = new dojo.store.JsonRest({target:'products/'});

        grid = new dojox.grid.DataGrid(
        {
            store:dojo.data.ObjectStore({objectStore: store}),
            structure: 
            [
                {name:'id', field: 'id'},         
                {name:'date_A', field: 'dateA'},    
                    {name:'date_B', field: 'dateB'}, 
                    {name:'product' , field: 'product'},          
                ],
            queryOptions: {ignoreCase: true}
            }); 

    textBox.placeAt(appLayout.domNode);
    filterButton.placeAt(appLayout.domNode);
    grid.placeAt(appLayout.domNode);

    appLayout.startup();
}
);

如果你能告诉我这个 dojo 代码有什么问题,那就太好了... 结果是,出现了加载图标,过了一会儿显示了未过滤的数据……没有抛出异常。 提前致谢。

【问题讨论】:

  • 仅供参考:我在另一家名为 AndOrReadStore 的商店尝试过,但它也不起作用。
  • 你应该发表你的评论作为答案。

标签: javascript search datagrid dojo


【解决方案1】:

好的,我已经用 AndOrReadWriteStore 解决了。您还可以使用 AndOrReadStore。问题是 JSON 数据的格式不正确。您可以在此处查看正确的格式:dojotoolkit.org/api/dojox/data/AndOrReadStore。另一个变化是:我使用了 url 而不是 store 中的 data 属性。所以最后它现在正在工作。无论如何谢谢。

【讨论】:

  • 您好,我遇到了像您这样的大问题,请您演示更多,或向我们展示您的代码。
  • 对不起,我找不到了。我只是给我的主管做个展示。之后我以为我删除了。如果我再次找到展示柜,我一定会在这里发布。让我明天上班看看。
【解决方案2】:

下面是一个同时使用 AND 和 OR 的过滤器示例:

grid.filter("(genre: '恐怖' && (fname: '" + searchWord + "' || lname:'" + searchWord + "' ))")

因此,用户搜索词在 fname 和 lname 中作为 OR 进行过滤,但它也会搜索类型 = Horror 作为 AND。

本文档还有其他示例... http://livedocs.dojotoolkit.org/dojox/data/AndOrReadStore

【讨论】:

    猜你喜欢
    • 2012-07-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2023-04-05
    相关资源
    最近更新 更多