我需要一个widget列中的按钮才能知道它在ExtJS 6 panel.grid中的rowIndex,因此在按钮单击时它可以使用该功能。我知道我可以从渲染器函数中提取该信息,但这似乎是在创建按钮之前执行的。关于如何获得索引的任何想法?
答案 0 :(得分:2)
在gridview
上使用indexOf
。您需要将node
作为参数传递给它,该参数是表示该行的HTML元素。在Ext JS 6中,网格行是HTML表格,因此可以从按钮元素b
中找到按钮的行元素b.el.up('table')
。 gridview
也可以b.up('gridview')
找到。所以你得到:
var rowIndex = b.up('gridview').indexOf(b.el.up('table'));
答案 1 :(得分:1)
在Drake的回答基础上,我使用了event.record
属性。不幸的是,看起来您必须使click事件具有轻微的缓冲区,因此它会添加适当的记录。这有效,但我不完全确定它是否是正确的方法。 Example:
{
width: 150,
xtype: 'widgetcolumn',
widget: {
text: 'Button',
xtype: 'button',
text: 'Get row index',
listeners: {
buffer: 1,
click: function(button, event, eOpts) {
var record = event.record;
alert(store.find('postid', record.get('postid'), 0, false, true, true))
}
}
}
}
答案 2 :(得分:1)
使用onWidgetAttach
将小部件附加到记录时将调用的函数。这对于进行任何后处理可能很有用。
http://docs.sencha.com/extjs/5.1.2/api/Ext.grid.column.Widget.html#cfg-onWidgetAttach
该函数同时包含widget和record参数。 您可以执行widget.record = record,然后该按钮将具有您可以在单击侦听器中访问的记录成员