Dojo 使用QueryReadStore过滤网格
我有一个grid商店,它是一个QueryReadStore商店。它工作得很好,即使是虚拟滚动。 问题在于过滤器,当我过滤时,它会生成一个奇怪的URL,如下所示:Dojo 使用QueryReadStore过滤网格,dojo,dojox.grid.datagrid,Dojo,Dojox.grid.datagrid,我有一个grid商店,它是一个QueryReadStore商店。它工作得很好,即使是虚拟滚动。 问题在于过滤器,当我过滤时,它会生成一个奇怪的URL,如下所示: http://mydomain:8080/project=%3F&1=f&2=i&3=l&4=t&5=e&6=r&7=...... http://localhost:8080/project?filter={%22op%22:%22contains%22,%22data%22:[
http://mydomain:8080/project=%3F&1=f&2=i&3=l&4=t&5=e&6=r&7=......
http://localhost:8080/project?filter={%22op%22:%22contains%22,%22data%22:[{%22op%22:%22string%22,%22data%22:%22username%22,%22isCol%22:true},{%22op%22:%22string%22,%22data%22:%22s%22,%22isCol%22:false}]}
我想让它看起来像这样:
http://mydomain:8080/project=%3F&1=f&2=i&3=l&4=t&5=e&6=r&7=......
http://localhost:8080/project?filter={%22op%22:%22contains%22,%22data%22:[{%22op%22:%22string%22,%22data%22:%22username%22,%22isCol%22:true},{%22op%22:%22string%22,%22data%22:%22s%22,%22isCol%22:false}]}
以下是生成网格和过滤器的代码:
this.grid = new EnhancedGrid({
store: null,
structure: this.columns,
rowsPerPage: 20,
autoHeight: false,
plugins: {
filter: {
closeFilterbarButton: false,
isServerSide: true,
setupFilterQuery: dojo.hitch(this, function(commands, request){
if(commands.filter && commands.enable){
var gridStoreURL = this.grid.store.url;
if(gridStoreURL.indexOf("?") > -1) {
request.query = "&filter=" + JSON.stringify(commands.filter);
} else {
request.query = "?filter=" + JSON.stringify(commands.filter);
}
}else{
}
}),
ruleCount: 3,
itemsName: "logs",
disabledConditions: {anycolumn : this.disabledFilterAnyColumn}
}
}
}, this.idGridContainer);
我使用此功能创建商店:
var store = dojox.data.QueryReadStore({
url : this.urlBase + agentId,
requestMethod:"get"
});
this.grid.setStore(store, null, null);
当我使用JsonStore创建存储时,过滤器可以正常工作,但使用它却不行
提前感谢您似乎试图将存储查询设置为字符串,但IIRC
QueryReadStore
只希望将查询作为对象传递,而不是JsonRestStore
可以接受它
首先,试试这样的方法,看看是否能让你走得更远:
request.query = { filter: JSON.stringify(commands.filter) }