Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用complexQuery的Dojo DataGrid筛选不起作用_Javascript_Search_Datagrid_Dojo - Fatal编程技术网

Javascript 使用complexQuery的Dojo DataGrid筛选不起作用

Javascript 使用complexQuery的Dojo DataGrid筛选不起作用,javascript,search,datagrid,dojo,Javascript,Search,Datagrid,Dojo,我试图找出为什么过滤器功能不起作用,但我被卡住了。这是我第一次使用Dojo,但我并不太熟悉这个框架。我正在努力寻找可能2或3个小时,但我找不到解决办法。 我想要的是实现一个过滤器或搜索机制。但它不起作用,但。。。 这是我的代码: dojo.require('dojo.store.JsonRest'); dojo.require('dijit.layout.ContentPane'); dojo.require("dijit.form.Button"); dojo.require('dojox.g

我试图找出为什么过滤器功能不起作用,但我被卡住了。这是我第一次使用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代码出了什么问题,那就太好了。。。 结果是,加载图标出现,一段时间后显示未过滤的数据。。。没有抛出异常。
提前谢谢。

好的,我已经用Andor ReadWriteStore解决了这个问题。您也可以使用存储。问题是,JSON数据的格式不正确。您可以在这里看到正确的格式:dojotoolkit.org/api/dojox/data/readstore。另一个变化是:我在存储中使用了url而不是data属性。因此,它现在终于起作用了。反正是Thx。

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

grid.filter(((类型:'Horror'&&(fname:“+searchWord+”| lname:“+searchWord+”))

因此,用户搜索词作为OR在fname和lname中进行过滤,但它也作为and搜索GREEP=WORK

本文档还有其他示例。。。

仅供参考:我在另一家名为AndOrReadStore的商店试用过,但它也不起作用。你应该将你的评论作为答案发布。嗨,我和你一样遇到了一个大问题,请你再演示一下,或者给我们看看你的代码。很抱歉,我再也找不到了。对我的主管来说,这只是一个作秀的例子。之后我想我删除了。如果我再次找到这个案例,我一定会把它贴在这里。让我看看明天的工作。