【发布时间】:2015-08-24 14:12:32
【问题描述】:
我需要一个小部件列中的按钮来知道它在 ExtJS 6 panel.grid 中的 rowIndex,以便在单击按钮时它可以使用该功能。我知道我可以从渲染器函数中提取该信息,但这似乎是在创建按钮之前执行的。关于如何获取索引的任何想法?
【问题讨论】:
-
好像你在这里问错了问题。可以不用
onWidgetAttach模板方法吗?
标签: javascript extjs extjs6
我需要一个小部件列中的按钮来知道它在 ExtJS 6 panel.grid 中的 rowIndex,以便在单击按钮时它可以使用该功能。我知道我可以从渲染器函数中提取该信息,但这似乎是在创建按钮之前执行的。关于如何获取索引的任何想法?
【问题讨论】:
onWidgetAttach模板方法吗?
标签: javascript extjs extjs6
在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'));
【讨论】:
基于 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))
}
}
}
}
【讨论】:
使用 onWidgetAttach
当小部件附加到记录时将调用的函数。这对于进行任何后处理可能很有用。
http://docs.sencha.com/extjs/5.1.2/api/Ext.grid.column.Widget.html#cfg-onWidgetAttach
该函数同时具有小部件和记录参数。 你可以做widget.record =record,然后按钮就会有你可以在点击监听器中访问的记录成员
【讨论】: