[英]How to hide rows in ExtJS GridPanel?
假设我知道要定位哪个行索引(例如,this.rowToBeDeleted的值为2),我怎么能只从网格而不是商店隐藏这一行 (我在商店中有一个标志,表示哪些行应该稍后在我的PHP Web服务代码中从db中删除)。
您可以使用store.filter()
方法之一,也可以隐藏row元素。
grid.getView().getRow(rowIndex).style.display = 'none';
我认为只是从商店中删除记录并让商店更新视图要好得多,因为您要删除记录而不是隐藏它。 如果存储处于批处理模式(默认值:batch:true,restful:false),它将记住您已删除的行,并且在调用store.save()
之前不会向服务器发出请求。
在ExtJS 4.1中,没有view.getRow(..)
。 相反,你可以使用:
this.view.addRowCls(index, 'hidden');
隐藏指定索引处的行,和
this.view.removeRowCls(index, 'hidden');
显示它('this'是网格)。
CSS类hidden
定义为
.hidden,
{
display: none;
}
这对于store.filterBy()
不合适的特殊情况很有用。
我建议使用store.FilterBy()
并传递一个函数来测试rowToBedeleted中值的值:
store.filterBy(function(record) {
return record.get("rowToBeDeleted") != 2;
});
我刚刚写了一篇关于gridfiltering的基本博文,你可以在这里阅读: http ://aboutfrontend.com/extjs/extjs-grid-filter/
在网格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}
这将隐藏网格中的行而不从存储中删除或过滤。
您可以使用store.filter()
或store.filterBy()
方法。
在记录上设置“隐藏”属性,并过滤所有隐藏设置为true的记录。 这样他们仍然会在商店中出现但在网格中不可见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.