0

ユーザーがグリッドパネルのすべての列を非表示にできないことに気付きました。グリッドには少なくとも1つの列が表示されている必要があるようです。これは素晴らしい機能だと思いますが、非表示の列と非表示の列の両方を処理する場合、期待どおりに機能しません。グリッドに非表示の列がある場合でも、表示するには少なくとも1つの非表示の列が必要であるという規則があるようです

少なくとも1つの非表示にできない列が表示されているときに、すべての非表示にできる列を非表示にしないことは私には意味がありません。この動作は構成可能ですか?問題を示すステートフルアレイグリッドの例 

に基づいてデモを作成しました: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'
    },
...
4

1 に答える 1

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]);
            }
        }
    }
});
于 2012-11-27T20:57:18.420 に答える