【问题标题】:How do I get column name from rowselection in an ExtJS grid?如何从 ExtJS 网格中的行选择中获取列名?
【发布时间】:2010-11-20 23:47:51
【问题描述】:
我有一个 extjs 网格面板设置,我希望能够根据用户单击网格中的文本或图标来执行操作。例如,如果用户单击(或双击)列中的单词,则过滤网格,或者如果用户单击图标,则显示弹出窗口。我可以轻松获取他们单击的行,以及该行中列名的值,但我不知道单击了哪一列。
或者,我可以向整个网格添加一个 onClick,然后我可以从行/列中获取单个文本,但我不知道该值属于哪个行索引或列。我可以添加一个 CSS 类来告诉我一个列名,但这似乎是一种 hack。
有什么内置的东西可以做到这一点吗?
【问题讨论】:
标签:
javascript
extjs
grid
【解决方案1】:
网格上的"cellclick" event 是要走的路。监听此事件的函数被传递:
( Grid this, Number rowIndex, Number columnIndex, Ext.EventObject e )
如果要获取gridCell的文本,调用yourGrid.getView().getCell(rowIndex, colIndex)会返回DOM元素。
如果要获取列标题,请致电:yourGrid.getColumnModel().getColumnHeader(colIndex)
如果您想查找有关特定专栏的其他信息,请致电yourGrid.getColumnModel().getColumnAt(colIndex)
【解决方案2】:
我认为,如果您对列式事件感兴趣,那么行选择是错误的事件。正如 Joshua 建议的那样,cellclick 事件将是您必须调查的事件。
这个事件可以给定列的dataIndex
var fieldName = grid.getColumnModel().getDataIndex(columnIndex);
【解决方案3】:
请查看用于复选框呈现和事件处理的 edit-grid.html 示例。