ExtJS设置菜单在网格

时间:2017-02-27 16:26:42

标签: javascript extjs extjs6

尝试动态删除包含排序的列标题菜单。 在每列中的 afterrender 事件上设置menuDisabled = false

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

如果不是menuDisabled,我会尝试将sortable设为false,那就完美了。

2 个答案:

答案 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