Какая стандартная функция ExtJS 4.2 выполняется для выбора сетки при использовании Ext.selection.RowModel (по умолчанию) selModel?

Существует ошибка, связанная с тем, как плагин Ext.grid.Panel rowexpander работает, когда вложенная сетка настроена на renderTo на id div rowexpander.

Когда это реализовано, трудно понять, что на самом деле выбрано. Причиной этого является то, что для "подсветки" должны быть учтены конфигурации "disableSelection" и "trackMouseOver". Я должен установить "trackMouseOver: false", чтобы зависание над строками сетки не мешало воспроизводить это поведение. Затем "disableSelection: false" необходимо установить так, чтобы эта проблема выбора действительно возникала.

Проблема заключается в том, что при выборе индекса 1 вложенной сетки индекса родительской сетки 0 строка также выбирается строка индекса 1 родительской сетки. Если вы выберете индекс 2 вложенной сетки строки с индексом родительской сетки 0, также будет выбран индекс 2 родительской сетки.

Когда выбрано 935424, выбирается 815138, так как они оба являются индексами 0.

Когда выбрано 1056257, выбирается 1013525, так как они оба являются индексом 1.

Когда выбрано 1200191, выбирается 1261631, так как они оба являются индексом 2.

Я подозреваю, что экземпляр модели выбора может делиться с сеткой и вложенными сетками, поскольку я использую одно и то же определение. Они, конечно, разные экземпляры одного и того же определения, но я не уверен, как структура обрабатывает дополнительные сетки с помощью Ext.create?

Я хотел бы спросить, как исправить это или закрыть меня, я буду голосовать за вас (часто). Но если вы можете хотя бы дать мне понять, где эта функция выбора вызывается в фреймворке, это приведет меня к правильному пути и может отлаживать и обнаруживать исправление для него. Я читал, что события могут пузыриться, и, возможно, то, что происходит здесь. Кажется, что у него есть дескриптор строки, потому что, когда я дважды нажимаю на строку вложенной сетки, он не только пытается развернуть эту строку, но также строку из родительской строки сетки (которая соответствует индексу строки).

2 ответа

После создания какой-либо рекурсивной вложенной сетки мне пришлось вызывать эту строку, поэтому события click и dblclick (и другие) не пузырятся/распространяются в родительскую сетку.

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


Как вы загрузили модель выбора?

selModel: 'rowselection',

Или

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

Если вы используете первый синтаксис, вы должны получить независимую модель выбора для каждой сетки. Если вы используете второй синтаксис, вы получаете только одну модель выбора, которая распределяется между всеми экземплярами сетки.

licensed under cc by-sa 3.0 with attribution.