如何在extjs小部件列中获取rowIndex

时间:2015-08-24 14:12:33

标签: javascript extjs extjs6

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

3 个答案:

答案 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'));

请参阅操作:https://fiddle.sencha.com/#fiddle/snq

答案 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,然后该按钮将具有您可以在单击侦听器中访问的记录成员