PDA

View Full Version : Hiding of all hideable columns not allowed?



Bert Regelink
27 Nov 2012, 9:56 AM
I noticed that a user cannot hide all columns in a gridpanel. It seems that the grid must at least display one column. I can imagine this is a nice feature, but it doesn't work quite as I expected when dealing with both hideable and non-hideable columns. It seems that the rule is that at least one hideable column is required to display, even if there is a non-hideable column in the grid.

It doesn't make sense to me to not allow hiding of all hideable columns when at least one non-hideable column is displayed. Is this behaviour configurable?

I created a demo based on the Stateful Array Grid Example showing the problem:
http://jsfiddle.net/p9zqK/

Bert Regelink
27 Nov 2012, 1:25 PM
A simple hack is to allow all columns to be hidden unconditionally (in my application I don't bother about checking whether hideable columns exist, because I know they do...)




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]);
}
}
}
});

Animal
27 Nov 2012, 1:58 PM
This is fixed in 4.2

Possibly the fix was in 4.1.3, but it definitely works with latest code.