使用Ext.selection.RowModel(默认)selModel时,为网格选择执行什么ExtJS 4.2标准函数?

时间:2014-08-11 20:57:38

标签: select extjs grid extjs4 nested

当嵌套网格设置为renderTo到rowexpander div id时,Ext.grid.Panel rowexpander插件的工作方式存在错误。

实施此功能后,很难看到实际选择的内容。这是因为配置“disableSelection”和“trackMouseOver”都要考虑突出显示。我必须设置“trackMouseOver:false”,以便将鼠标悬停在网格行上不会干扰重现此行为。然后必须设置“disableSelection:false”,以便实际发生此选择问题。

问题在于,当您选择父网格索引0行的嵌套网格的索引1时,也会选择索引1行父网格。如果选择父网格索引0行的嵌套网格的索引2,则也会选择父网格的索引2。

当选择935424时,选择815138,因为它们都是索引0。

当选择1056257时,选择1013525,因为它们都是索引1。

选择1200191时,选择1261631,因为它们都是索引2。

我怀疑选择模型实例可能会与网格和嵌套网格共享,因为我使用相同的定义。它们当然是相同定义的不同实例,但我不确定框架如何使用Ext.create处理其他网格?

我想问一下如何解决它或让我接近,我会投票给你(经常)。但是,如果你至少可以给我一个关于在框架中调用这个选择函数的线索,那将使我走上正确的轨道并且可以调试并发现它的修复。我已经读到事件可能会冒泡,也许这就是这里发生的事情。它似乎也在行上有一个句柄,因为当我双击嵌套的网格行时,它不仅尝试扩展该行,而且还尝试扩展父网格行(与行索引匹配)的行。

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

在创建任何递归嵌套网格之后,我不得不调用此行,以便click和dblclick(和其他)事件不会冒泡/传播到父网格。

grid[cnt].getEl().swallowEvent(['mouseover', 'mousedown', 'click', 'dblclick', 'onRowFocus']);

答案 1 :(得分:0)

您是如何加载选择模型的?

selModel: 'rowselection',

或者

selModel: Ext.create('Ext.selection.RowModel'),

如果使用第一种语法,则应为每个网格获得一个独立的选择模型。如果使用第二种语法,则只能获得一个在所有网格实例之间共享的选择模型。