2017-02-27 62 views
1

試圖刪除包含動態排序的列標題菜單。 設置menuDisabled = false事後在每列中提示事件。ExtJS設置菜單在網格中動態禁用

Ext.each(view.getColumns(), function (item) { 
    item.menuDisabled = true; 
    // item.sortable = false; //this works perfectly 
}); 

如果代替menuDisabled我試圖把sortable爲假,完美的作品。

回答

1

這是因爲在afterrender菜單已經創建,並且設置屬性不會禁用它出現,你應該在init上嘗試它,或者反而像你已經禁用了列的排序。

+0

謝謝@布魯諾先生。我已經把這個功能從'afterrender'事件轉移到'beforerender'並且它完美地工作。 –

+0

@GrumpyTurtle如果答案有效,請將我的答案標記爲正確 –

1

是的,menuDisabled是在列渲染時考慮到的一個配置,並且在此之後對其進行修改並不值得。但是,切換列菜單有一個棘手的方法,只有在列menuDisabled設置爲false時呈現。

所以,如果潛入列類的源代碼,我們會看到,在renderTpl配置有下面的一段代碼:

'<tpl if="!menuDisabled">', 
    '<div id="{id}-triggerEl" data-ref="triggerEl" role="presentation" unselectable="on" class="', 
    Ext.baseCSSPrefix, 'column-header-trigger', '{childElCls}" style="{triggerStyle}"></div>', 
'</tpl>', 

,它將使一個div EL,將切換菜單。所以通過切換此div的可見性,您將切換菜單禁用「狀態」。

column.triggerEl.show(); 
column.triggerEl.hide(); 

在你的情況,你可以禁用表示,像這樣所有列的菜單:

Ext.each(view.getColumns(), function(item) { 
    item.triggerEl.hide(); 
}); 

這裏是工作提琴:https://fiddle.sencha.com/#view/editor&fiddle/1r2h