尝试动态删除包含排序的列标题菜单。
在每列中的 afterrender 事件上设置menuDisabled = false
。
Ext.each(view.getColumns(), function (item) {
item.menuDisabled = true;
// item.sortable = false; //this works perfectly
});
如果不是menuDisabled
,我会尝试将sortable
设为false,那就完美了。
答案 0 :(得分:1)
那是因为在Afterrender上已经创建了菜单,设置属性不会禁用它出现,你应该在init上尝试,或者像你已经禁用了列的排序。
答案 1 :(得分: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的可见性,您将切换 menuDisabled &#34; state&#34;。
column.triggerEl.show();
column.triggerEl.hide();
在您的情况下,您可以禁用显示所有列的菜单,如下所示:
Ext.each(view.getColumns(), function(item) {
item.triggerEl.hide();
});
这是一个工作小提琴:https://fiddle.sencha.com/#view/editor&fiddle/1r2h。