Extjs 4 为啥不允许隐藏所有可隐藏的列?
Posted
技术标签:
【中文标题】Extjs 4 为啥不允许隐藏所有可隐藏的列?【英文标题】:Extjs 4 why is hiding of all hideable columns not allowed?Extjs 4 为什么不允许隐藏所有可隐藏的列? 【发布时间】:2012-11-27 18:11:15 【问题描述】:我注意到用户无法隐藏网格面板中的所有列。似乎网格必须至少显示一列。我可以想象这是一个不错的功能,但是在处理可隐藏和不可隐藏的列时,它并没有像我预期的那样工作。似乎规则是至少需要显示一个 可隐藏 列,即使网格中有不可隐藏的列也是如此。 当至少显示一个不可隐藏的列时,不允许隐藏所有可隐藏的列对我来说没有意义。此行为是否可配置? 我根据 Stateful Array Grid Example 创建了一个演示,显示了问题:http://jsfiddle.net/p9zqK/
var grid = Ext.create('Ext.grid.Panel',
store: store,
stateful: true,
stateId: 'stateGrid',
columns: [
text : 'Company',
flex : 1,
sortable : false,
hideable : false,
dataIndex: 'company'
,
text : 'Price',
width : 75,
sortable : true,
renderer : 'usMoney',
dataIndex: 'price'
,
...
【问题讨论】:
【参考方案1】:一个简单的技巧是允许无条件隐藏所有列(在我的应用程序中,我不关心是否存在可隐藏列,因为我知道它们确实存在......)
Ext.override(Ext.grid.header.Container,
updateMenuDisabledState: function()
var me = this,
result = me.getLeafMenuItems(),
total = result.checkedCount,
items = result.items,
len = items.length,
i = 0,
rootItem = me.getMenu().child('#columnItem');
//if (total <= 1)
if (total <= 0) /* Allow all columns to be hidden unconditionally */
me.disableMenuItems(rootItem, Ext.ComponentQuery.query('[checked=true]', items)[0]);
else
for (; i < len; ++i)
me.setMenuItemState(total, rootItem, items[i]);
);
【讨论】:
Ext JS 开发团队回复说这个问题在 Ext JS 4.2 中得到修复:sencha.com/forum/…以上是关于Extjs 4 为啥不允许隐藏所有可隐藏的列?的主要内容,如果未能解决你的问题,请参考以下文章