Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 4为什么不允许隐藏所有可隐藏列?_Extjs_Hide_Gridpanel - Fatal编程技术网

Extjs 4为什么不允许隐藏所有可隐藏列?

Extjs 4为什么不允许隐藏所有可隐藏列?,extjs,hide,gridpanel,Extjs,Hide,Gridpanel,我注意到用户无法隐藏gridpanel中的所有列。看起来网格必须至少显示一列。我可以想象这是一个很好的特性,但在处理可隐藏列和不可隐藏列时,它并不像我预期的那样工作。规则似乎是至少需要显示一个可隐藏列,即使网格中存在不可隐藏列。 在至少显示一个不可隐藏列时,不允许隐藏所有可隐藏列对我来说没有意义。此行为可配置吗? 我根据有状态数组网格示例创建了一个演示,演示了问题: 一个简单的方法是允许无条件隐藏所有列(在我的应用程序中,我不必检查是否存在可隐藏列,因为我知道它们确实存在…) Ext.ov

我注意到用户无法隐藏gridpanel中的所有列。看起来网格必须至少显示一列。我可以想象这是一个很好的特性,但在处理可隐藏列和不可隐藏列时,它并不像我预期的那样工作。规则似乎是至少需要显示一个可隐藏列,即使网格中存在不可隐藏列。

在至少显示一个不可隐藏列时,不允许隐藏所有可隐藏列对我来说没有意义。此行为可配置吗?

我根据有状态数组网格示例创建了一个演示,演示了问题:


一个简单的方法是允许无条件隐藏所有列(在我的应用程序中,我不必检查是否存在可隐藏列,因为我知道它们确实存在…)

Ext.override(Ext.grid.header.Container,
{
UpdateNudisableState:函数()
{
var me=这个,
结果=me.getLeafMenuItems(),
总计=结果。检查计数,
items=结果。items,
len=项目长度,
i=0,
rootItem=me.getMenu().child('#columnItem');

//如果(total)收到Ext JS开发团队的回复,该问题已在Ext JS 4.2中修复:
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'
    },
...
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]);
            }
        }
    }
});