假设我知道要定位哪个行索引(例如,this.rowToBeDeleted的值为2),我怎样才能仅从网格中隐藏此行而不是商店(我有一个商店中的标志,表示我的PHP Web服务代码中应该从数据库中删除哪些行。)
答案 0 :(得分:14)
您可以使用其中一种store.filter()
方法,也可以隐藏行元素。
grid.getView().getRow(rowIndex).style.display = 'none';
我认为只是从商店中删除记录并让商店更新视图要好得多,因为您要删除记录而不是隐藏它。如果存储处于批处理模式(默认值:batch:true,restful:false),它将记住您已删除的行,并且在您调用store.save()
之前不会向服务器发出请求。
答案 1 :(得分:6)
在ExtJS 4.1中,没有view.getRow(..)
。相反,您可以使用:
this.view.addRowCls(index, 'hidden');
隐藏指定索引处的行,
this.view.removeRowCls(index, 'hidden');
显示它('这个'是网格)。
CSS类hidden
定义为
.hidden,
{
display: none;
}
这对于store.filterBy()
不合适的特殊情况很有用。
答案 2 :(得分:5)
我建议使用store.FilterBy()
并传递一个函数来测试rowToBedeleted中值的值:
store.filterBy(function(record) {
return record.get("rowToBeDeleted") != 2;
});
我刚才写了一篇关于gridfiltering的基本博文,你可以在这里阅读:http://aboutfrontend.com/extjs/extjs-grid-filter/
答案 3 :(得分:1)
您可以使用store.filter()
或store.filterBy()
方法。
在记录上设置“隐藏”属性,并过滤所有隐藏设置为true的记录。这样他们仍然会出现在商店中但在网格中不可见。
答案 4 :(得分:1)
在网格js文件中编写以下代码,将CSS应用于要隐藏的行。
<pre><code>
Ext.define('MyGrid',{
extend : 'Ext.grid.Panel',
xtype : ''mygrid',
viewConfig : {
getRowClass : function(record,id){
if(record.get('rowToBeDeleted') == 2){
return 'hide-row';
}
}
},
.................
.................
});
</code></pre>
现在在custom.css文件中定义自定义CSS:
.hide-row{display:none}
这将隐藏网格中的行而不从商店中删除或过滤。