[英]Ext JS 3 - Disable sort on click of a grid column header
When sort is enabled in a column, clicking the header automatically sorts on that column. 在列中启用排序后,单击标题会自动对该列进行排序。 I want to disallow sorting based on a click of the column's header but retain sorting through the header's menu.
我想禁止基于单击列标题的排序,但保留通过标题菜单进行的排序。 In other words, the only way to sort the column is by entering the header menu.
换句话说,对列进行排序的唯一方法是进入标题菜单。 Any thoughts?
有什么想法吗?
{
xtype: 'gridcolumn',
menuDisabled: true,
width: '75%'
}
var contextMenu = new Ext.menu.Menu({
items: [{
id: 'sort-high-to-low',
cls: 'xg-hmenu-sort-asc',
text: 'Sort Ascending within Group'
},{
id: 'sort-low-to-high',
cls: 'xg-hmenu-sort-desc',
text: 'Sort Descending within Group'
},'-',{
id: 'sort-high-to-low-all',
cls: 'xg-hmenu-sort-asc',
text: 'Sort All Ascending'
},{
id: 'sort-low-to-high-all',
cls: 'xg-hmenu-sort-desc',
text: 'Sort All Descending'
},'-', {
id: 'heatmap',
cls: 'xg-hmenu-heatmap',
text: 'Open in Heatmap'
}],
listeners: {
scope: this,
itemclick: function(item) {
switch (item.id) {
case 'sort-high-to-low':
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'ASC');
this.hide();
break;
case 'sort-low-to-high':
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'DESC');
this.hide();
break;
case 'sort-high-to-low-all':
Ext.getCmp('backtestGrid').getStore().clearGrouping();
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'ASC');
this.hide();
break;
case 'sort-low-to-high-all':
Ext.getCmp('backtestGrid').getStore().clearGrouping();
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'DESC');
this.hide();
break;
case 'heatmap':
heatmapCallback(contextMenu.headerName, contextMenu.columnId);
this.hide();
break;
}
}
}});
In Ext 6: 在Ext 6中:
Override Ext.grid.column.Column
to condition the sortOnClick
attribute on the method onTitleElClick
覆盖
Ext.grid.column.Column
调节所述sortOnClick
上该方法属性onTitleElClick
I and used a new configuration enableSortOnClick
to control this. 我并使用了新的配置
enableSortOnClick
来控制它。
Setting enableSortOnClick = false
disables sort on header click but maintains sort functionality on header dropdown menu. 设置
enableSortOnClick = false
会禁用标题单击时的排序,但会保留标题下拉菜单上的排序功能。
Ext.define('App.overrides.ColumnOverride', {
override: 'Ext.grid.column.Column',
config: {
/** Control sortOnClick at TitleElClick event*/
enableSortOnClick: false,
},
/**@Overrides*/
onTitleElClick: function(e, t, sortOnClick) {
return this.callParent([e, t, this.enableSortOnClick && sortOnClick]);
}
});
I ended up building my own context menu based on the following post. 我最终根据以下文章构建了自己的上下文菜单。
How i can create context menu for extjs grid 我如何为extjs网格创建上下文菜单
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.