Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 最终用户如何清除网格列的排序?_Extjs_Extjs6_Extjs7 - Fatal编程技术网

Extjs 最终用户如何清除网格列的排序?

Extjs 最终用户如何清除网格列的排序?,extjs,extjs6,extjs7,Extjs,Extjs6,Extjs7,我使用ExtJs 6.6.0 Classic。该组件支持多列排序(我使用remoteSort:true,remoteFilter:true)。每当用户单击列标题时,该列将成为order by列表中的第一列。但我无法找到最终用户应该如何清除列的排序。通过列标题可用的上下文菜单没有“清除排序”选项 也可以看到这个厨房水槽 我觉得我错过了什么。从标题继承的列有一个配置,但我找不到使用它的位置(我想可能有一些配置可以用于将Clear Sort菜单项添加到列上下文菜单) 作为最后手段,我可以添加一个按钮来

我使用ExtJs 6.6.0 Classic。该组件支持多列排序(我使用remoteSort:true,remoteFilter:true)。每当用户单击列标题时,该列将成为order by列表中的第一列。但我无法找到最终用户应该如何清除列的排序。通过列标题可用的上下文菜单没有“清除排序”选项

也可以看到这个厨房水槽

我觉得我错过了什么。从标题继承的列有一个配置,但我找不到使用它的位置(我想可能有一些配置可以用于将Clear Sort菜单项添加到列上下文菜单)

作为最后手段,我可以添加一个按钮来执行清除商店排序的操作,但我不喜欢这样

有没有一种简单的方法可以通过Extjs组件配置为网格列添加一个清除排序选项


谢谢

我也没有找到,但您可以使用以下覆盖:

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:。很简单。