-1

それは期待される結果です:http://rghost.net/39116974/image.png。そのため、最後の「キャプション」のチェックを外すことはできません。

前もって感謝します。

4

4 に答える 4

1

Ext.grid.column.ColumnViewプロパティを持っていhideableます。

ユーザーがこの列を非表示にできないようにするには、False。

デフォルト: true

于 2012-07-09T11:27:38.180 に答える
1

これはどう

for(var i=0; i< grid.columns.length - 1; i++)
    grid.columns[i].hide();
于 2012-07-11T22:20:52.267 に答える
0

1 つを除いてすべてを非表示にする場合は、Ext.grid.GridView のメソッドhandleHdMenuClick を確認する必要があります ( 2.3、3.0、3.1 ext バージョンで使用しました) 列のプロパティ:

    handleHdMenuClick : function(item){
    var index = this.hdCtxIndex;
    var cm = this.cm, ds = this.ds;
    switch(item.id){
        case "asc":
            ds.sort(cm.getDataIndex(index), "ASC");
            break;
        case "desc":
            ds.sort(cm.getDataIndex(index), "DESC");
            break;
        default:
            index = cm.getIndexById(item.id.substr(4));
            if(index != -1){
                if(item.checked && cm.getColumnsBy(this.isHideableColumn, this).length <= 1){
                    this.onDenyColumnHide();
                    return false;
                }
                cm.setHidden(index, item.checked);
            }
    }
    return true;
},

    isHideableColumn : function(c){
    return !c.hidden && !c.fixed;
},

ただし、2.x バージョンでは固定プロパティが使用されていたのが唯一の違いでしたが、3.x 以降では使用されませんでした。この問題を修正するには、オーバーライド ファイルを追加する必要があります。

   Ext.override(Ext.grid.GridView, {
        handleHdMenuClick : function(item) {
            var store     = this.ds,
                dataIndex = this.cm.getDataIndex(this.hdCtxIndex),
                result    = true;

            switch (item.getItemId()) {
                case 'asc':
                    store.sort(dataIndex, 'ASC');
                    break;
                case 'desc':
                    store.sort(dataIndex, 'DESC');
                    break;
                default:
                    result = this.handleHdMenuClickDefault(item);
            }
            return result;
        },

        handleHdMenuClickDefault: function(item) {
            var colModel = this.cm,
                itemId   = item.getItemId(),
                index    = colModel.getIndexById(itemId.substr(4));

            if (index != -1) {
                if (item.checked && colModel.getColumnsBy(this.isHideableColumn, this).length <= 1) {
                    this.onDenyColumnHide();
                    return false;
                }
                colModel.setHidden(index, item.checked);
            }
        },

        isHideableColumn : function(c) {
            return !c.hidden && !c.fixed;
        }
    });
于 2013-08-22T12:10:41.270 に答える
0

グリッドをレンダリングする前に、最後の列を見つけて、その非表示を false に設定できます。

すなわち:

myGrid.on( 'beforerender', function(){
    myGrid.colModel = myGrid.getColumnModel();
    myGrid.colModel.config[ myGrid.colModel.config.length - 1 ].hideable = false;
} );
于 2012-07-11T22:50:50.767 に答える