假设我知道要定位哪个行索引(例如,this.rowToBeDeleted的值为2),我怎么能只从网格而不是商店隐藏这一行(我在商店中有一个标志,表示哪些行应该稍后在我的PHP Web服务代码中从db中删除).
Rob*_*ond 14
您可以使用其中一种store.filter()方法,也可以隐藏行元素.
grid.getView().getRow(rowIndex).style.display = 'none';
Run Code Online (Sandbox Code Playgroud)
我认为只是从商店中删除记录并让商店更新视图要好得多,因为您要删除记录而不是隐藏它.如果存储处于批处理模式(默认值:batch:true,restful:false),它将记住您已删除的行,并且在您调用之前不会向服务器发出请求store.save().
在ExtJS 4.1中,没有view.getRow(..).相反,你可以使用:
this.view.addRowCls(index, 'hidden');
Run Code Online (Sandbox Code Playgroud)
隐藏指定索引处的行,和
this.view.removeRowCls(index, 'hidden');
Run Code Online (Sandbox Code Playgroud)
显示它('this'是网格).
CSS类hidden定义为
.hidden,
{
display: none;
}
Run Code Online (Sandbox Code Playgroud)
这对于store.filterBy()不合适的特殊情况很有用.
小智 5
我建议使用store.FilterBy()并传递一个函数来测试rowToBedeleted中值的值:
store.filterBy(function(record) {
return record.get("rowToBeDeleted") != 2;
});
Run Code Online (Sandbox Code Playgroud)
我刚刚写了一篇关于gridfiltering的基本博文,你可以在这里阅读:http://aboutfrontend.com/extjs/extjs-grid-filter/