1

我需要一个小部件列中的按钮来知道它在 ExtJS 6 panel.grid 中的 rowIndex,以便在单击按钮时它可以使用该功能。我知道我可以从渲染器函数中提取该信息,但这似乎是在创建按钮之前执行的。关于如何获取索引的任何想法?

4

3 回答 3

2

indexOf上使用gridview。您需要将nodeas 参数传递给它,它是表示行的 HTML 元素。在 Ext JS 6 中,网格行是 HTML 表格,因此可以从按钮元素中找到按钮的行元素bb.el.up('table'). gridview也可以作为b.up('gridview'). 所以你得到:

var rowIndex = b.up('gridview').indexOf(b.el.up('table'));

实际操作:https ://fiddle.sencha.com/#fiddle/snq

于 2015-08-24T14:49:21.717 回答
1

基于 Drake 的回答,我改用该event.record属性。不幸的是,看起来您必须使 click 事件有一个轻微的缓冲区,以便将正确的记录添加到其中。这行得通,但我不完全确定这是否是正确的方法。 示例

{
  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))
      }
    }
  }
}
于 2016-01-28T19:30:04.327 回答
1

使用 onWidgetAttach

当小部件附加到记录时将调用的函数。这对于进行任何后处理可能很有用。

http://docs.sencha.com/extjs/5.1.2/api/Ext.grid.column.Widget.html#cfg-onWidgetAttach

该函数同时具有小部件和记录参数。您可以执行widget.record = record,然后按钮将具有您可以在点击监听器中访问的记录成员

于 2016-11-09T14:17:40.840 回答