Как получить имя столбца из выбора строки в сетке ExtJS?

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

В качестве альтернативы я мог бы добавить onClick ко всей сетке, чтобы затем получить отдельный текст из строки/столбца, но я не знаю, к какому индексу строки или столбцу принадлежит это значение. Я мог бы добавить класс CSS, который сообщал бы мне имя столбца, но это похоже на хак.

Есть ли что-нибудь встроенное, что может это сделать?


person Cliff    schedule 19.08.2009    source источник
comment
Следующий пост может пролить некоторый полезный свет: stackoverflow.com/questions/8083004/   -  person Yoosaf Abdulla    schedule 20.12.2011


Ответы (3)


Событие "cellclick" в сетке путь. Функция прослушивания этого события передается:

  • ( Grid this, Number rowIndex, Number columnIndex, Ext.EventObject e )

Если вы хотите получить текст gridCell, вызов yourGrid.getView().getCell(rowIndex, colIndex) вернет элемент DOM.

Если вы хотите получить заголовок столбца, вызовите: yourGrid.getColumnModel(). getColumnHeader(colIndex)

Если вы хотите узнать что-нибудь еще о конкретном столбце, вызовите yourGrid.getColumnModel().getColumnAt(colIndex)

person Joshua    schedule 20.08.2009

Я думаю, что если вы заинтересованы в событиях по столбцам, выбор строки - это неправильное событие для изучения. Как предположил Джошуа, событие cellclick будет событием вы должны изучить.

Это событие может дать dataIndex столбца, как указано

var fieldName = grid.getColumnModel().getDataIndex(columnIndex); 
person Arun P Johny    schedule 03.09.2009

Пожалуйста, посмотрите пример edit-grid.html для рендеринга флажков и обработки событий.

person Thevs    schedule 22.08.2009