Javascript 使用complexQuery的Dojo DataGrid筛选不起作用
我试图找出为什么过滤器功能不起作用,但我被卡住了。这是我第一次使用Dojo,但我并不太熟悉这个框架。我正在努力寻找可能2或3个小时,但我找不到解决办法。 我想要的是实现一个过滤器或搜索机制。但它不起作用,但。。。 这是我的代码: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.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的商店试用过,但它也不起作用。你应该将你的评论作为答案发布。嗨,我和你一样遇到了一个大问题,请你再演示一下,或者给我们看看你的代码。很抱歉,我再也找不到了。对我的主管来说,这只是一个作秀的例子。之后我想我删除了。如果我再次找到这个案例,我一定会把它贴在这里。让我看看明天的工作。