Extjs 最终用户如何清除网格列的排序?
我使用ExtJs 6.6.0 Classic。该组件支持多列排序(我使用remoteSort:true,remoteFilter:true)。每当用户单击列标题时,该列将成为order by列表中的第一列。但我无法找到最终用户应该如何清除列的排序。通过列标题可用的上下文菜单没有“清除排序”选项 也可以看到这个厨房水槽 我觉得我错过了什么。从标题继承的列有一个配置,但我找不到使用它的位置(我想可能有一些配置可以用于将Clear Sort菜单项添加到列上下文菜单) 作为最后手段,我可以添加一个按钮来执行清除商店排序的操作,但我不喜欢这样 有没有一种简单的方法可以通过Extjs组件配置为网格列添加一个清除排序选项Extjs 最终用户如何清除网格列的排序?,extjs,extjs6,extjs7,Extjs,Extjs6,Extjs7,我使用ExtJs 6.6.0 Classic。该组件支持多列排序(我使用remoteSort:true,remoteFilter:true)。每当用户单击列标题时,该列将成为order by列表中的第一列。但我无法找到最终用户应该如何清除列的排序。通过列标题可用的上下文菜单没有“清除排序”选项 也可以看到这个厨房水槽 我觉得我错过了什么。从标题继承的列有一个配置,但我找不到使用它的位置(我想可能有一些配置可以用于将Clear Sort菜单项添加到列上下文菜单) 作为最后手段,我可以添加一个按钮来
谢谢我也没有找到,但您可以使用以下覆盖:
Ext.define('overrides.grid.header.Container', {
override: 'Ext.grid.header.Container',
getMenuItems: function() {
var me = this,
menuItems = [],
hideableColumns = me.enableColumnHide ? me.getColumnMenu(me) : null;
if (me.sortable) {
menuItems = [{
itemId: 'ascItem',
text: me.sortAscText,
iconCls: me.menuSortAscCls,
handler: me.onSortAscClick,
scope: me
}, {
itemId: 'descItem',
text: me.sortDescText,
iconCls: me.menuSortDescCls,
handler: me.onSortDescClick,
scope: me
}, {
itemId: 'dropSortItem',
text: me.sortClearText,
//iconCls: me.menuSortDescCls, // Your icon
handler: me.onSortClearClick,
scope: me
}];
}
if (hideableColumns && hideableColumns.length) {
if (me.sortable) {
menuItems.push({
itemId: 'columnItemSeparator',
xtype: 'menuseparator'
});
}
menuItems.push({
itemId: 'columnItem',
text: me.columnsText,
iconCls: me.menuColsIcon,
menu: hideableColumns,
hideOnClick: false
});
}
return menuItems;
},
onSortClearClick: function() {
var menu = this.getMenu(),
activeHeader = menu.activeHeader,
store = this.up('grid').getStore();
store.getSorters().each(function(sorter) {
if(sorter.initialConfig.property == activeHeader.dataIndex) {
store.getSorters().remove(sorter)
}
}, this);
}
});
不,你是对的。只要你不显式地调用一个方法,你就会迷失方向。我们有同样的问题,我们已经覆盖了头功能,第三种排序将清除它。基本上(向上、向下、移除)。您需要注意的是,在商店中移除分拣机有时不会更新列标题中的分拣方向。感谢您发布此消息。有一个小问题,我将对此进行调查。我为我的网格启用了多列排序。问题是它似乎没有删除最后的排序顺序。步骤:按列1排序、按列2排序、清除排序列1(确定)、清除排序列2(未更改)。清除排序列2似乎不起作用-排序未被删除。我使用远程排序和远程过滤。我会再打给你。为了澄清,Extjs似乎不会更新列标题以删除排序指示符(即列标题旁边的箭头),并且存储不会像我清除列1的排序时那样刷新。好的,我需要将此设置为true:。很简单。