我想我找到了您问题的解决方案。
首先,我没有 Ext JS 4.1.1。我当前 PC 上的框架。所以我试图找出你阅读 Ext JS 4.1.3 的问题。Sencha 网站上提供的文档。但我不认为他们在两个次要版本之间的框架的这一部分进行了重大更改,因此我的解决方案也应该适用于您的情况。我已经使用 JSFiddle 尝试了我的解决方案。不幸的是,他们没有 4.1.1。ext-all.css 文件,所以我手动链接了 Sencha 提供的 4.0.2 文件,所以菜单看起来有点错位。
标题菜单及其子菜单由 Ext.grid.header.Container 类管理。列子菜单由getColumnMenu方法构造。每次拖放或其他应该影响网格视图的事件都会清除和重建整个菜单。因此,为了解决问题,覆盖此方法就足够了。因为headercontainer类在框架中太深了,很难扩展它,所以你必须使用Ext.base.override方法。
列子菜单的菜单项是根据
items = headerContainer.query('>gridcolumn[hideable]')
询问。因此,在创建菜单项之前,您必须首先按字母顺序对结果进行排序。我已经在类中添加了 sortColumns 方法,它可以完成所有的排序工作。
所以这就是我所做的:链接到我的解决方案。
我希望这就是你要找的。