如何重新过滤dojo数据网格?

如何重新过滤dojo数据网格?,dojo,dojox.grid,Dojo,Dojox.grid,我有一个DataGrid,我已经使用grid.filter(query,rerender)过滤了它。如果我添加了另一个项目,在调用save()之后,我会在网格中看到新项目,即使它由于过滤器而不应该显示。我在想“好的,我会在商店完成保存后再次过滤它。但是在使用相同的查询调用grid.filter之后,所有行都消失了。你知道我可能做错了什么吗?” 过滤网格的代码: var filterQuery = dijit.byId("filterTextbox").attr("value"); var gri

我有一个DataGrid,我已经使用grid.filter(query,rerender)过滤了它。如果我添加了另一个项目,在调用save()之后,我会在网格中看到新项目,即使它由于过滤器而不应该显示。我在想“好的,我会在商店完成保存后再次过滤它。但是在使用相同的查询调用grid.filter之后,所有行都消失了。你知道我可能做错了什么吗?”

过滤网格的代码:

var filterQuery = dijit.byId("filterTextbox").attr("value");
var grid = dijit.byId("grid");
var queryValue = "*";
if(filterQuery != ""){
    queryValue += filterQuery + "*";
}
grid.filter({name: queryValue}, true);
将新项目添加到网格的代码

function addItemToGrid(newItemName){
     var newItem = {name: newItemName};
     var grid = dijit.byId("grid");
     var store = grid.store;
     store.addItem(newItem);
     store.save();
}

在addItemToGrid函数中,尝试向save方法添加onComplete侦听器,并在onComplete函数中对网格进行排序或过滤

store.save({onComplete: function() {
         grid.filter({name: queryValue}, true);
    }
});

在addItemToGrid函数中,尝试向save方法添加onComplete侦听器,并在onComplete函数中对网格进行排序或过滤

store.save({onComplete: function() {
         grid.filter({name: queryValue}, true);
    }
});
我有一些问题,只是在一些jQuery的帮助下,通过在后台定期运行网格过滤器来解决它

// ADD JQUERY
<script src="http://code.jquery.com/jquery-latest.js"></script>
//添加JQUERY

//将其放在页面的
$(文档).ready(函数(){
函数filterTheDataGrid(){
if(dijit.byId(“网格”)!=未定义){
dijit.byId(“grid”).filter({color:“Red”});
}
}
//每隔一秒(1000毫秒)运行filterTheDataGrid函数//
//降低“1000”以加快刷新速度,每0.5秒刷新一次可能会降低到500//
var refreshDataGrid=setInterval(函数(){filterTheDataGrid();},1000);
}

//将其放在页面的
//设置数据的布局//
变量layoutItems=[[
{
字段:“id”,
姓名:“ID”,
宽度:“5px”,
隐藏:真的
},
{
字段:“颜色”,
名称:“颜色”,
宽度:“80px”
}
]];
//创建一个空的数据存储//
变量存储数据={
标识符:“id”,
标签:“id”,
项目:[]
}
var store3=new dojo.data.ItemFileWriteStore({data:storeData});

//将其放在页面的


函数addItemToGrid(formdata){
//此函数由对话框调用,并获取传递给它的表单数据//
var jsonobj=eval(“+dojo.toJson(formData,true)+”);
var myNewItem={
id:transactionItemID,
颜色:jsonobj.color
};
//将新项目插入商店:
store3.新项目(myNewItem);
store3.save({onComplete:savecomplete,onError:saveerror});
}
我有一个问题,只是在一些jQuery的帮助下,通过在后台定期运行网格过滤器来解决它。下面是一些示例代码;希望这能帮助其他有问题的人

// ADD JQUERY
<script src="http://code.jquery.com/jquery-latest.js"></script>
//添加JQUERY

//将其放在页面的
$(文档).ready(函数(){
函数filterTheDataGrid(){
if(dijit.byId(“网格”)!=未定义){
dijit.byId(“grid”).filter({color:“Red”});
}
}
//每隔一秒(1000毫秒)运行filterTheDataGrid函数//
//降低“1000”以加快刷新速度,每0.5秒刷新一次可能会降低到500//
var refreshDataGrid=setInterval(函数(){filterTheDataGrid();},1000);
}

//将其放在页面的
//设置数据的布局//
变量layoutItems=[[
{
字段:“id”,
姓名:“ID”,
宽度:“5px”,
隐藏:真的
},
{
字段:“颜色”,
名称:“颜色”,
宽度:“80px”
}
]];
//创建一个空的数据存储//
变量存储数据={
标识符:“id”,
标签:“id”,
项目:[]
}
var store3=new dojo.data.ItemFileWriteStore({data:storeData});

//将其放在页面的


函数addItemToGrid(formdata){
//此函数由对话框调用,并获取传递给它的表单数据//
var jsonobj=eval(“+dojo.toJson(formData,true)+”);
var myNewItem={
id:transactionItemID,
颜色:jsonobj.color
};
//将新项目插入商店:
store3.新项目(myNewItem);
store3.save({onComplete:savecomplete,onError:saveerror});
}
尝试使用:

store.newItem(newItem);
而不是store.addItem(newItem); (addItem不是将项目添加到商店的标准方法)

尝试使用:

store.newItem(newItem);
而不是store.addItem(newItem);
(addItem不是将项目添加到存储中的标准方法)

我实际上修改了我的代码并创建了一个备用答案,这样筛选器就不会不必要地每x毫秒运行一次,而是只在将新项目添加到数据网格后运行。我实际上修改了我的代码并创建了一个备用答案,这样筛选器就不会不必要地每x毫秒运行一次,而是只运行一次将新项添加到数据网格后。
store.newItem(newItem);