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

How to get rowIndex in extjs widget column

本文关键字:rowIndex extjs 小部      更新时间:2023-09-26

我需要一个按钮在一个小部件列知道它的rowIndex在ExtJS 6面板。网格,这样点击按钮就可以使用这个功能。我知道我可以从渲染器函数中提取这些信息,但这似乎是在创建按钮之前执行的。有什么办法可以得到索引吗?

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

基于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))
      }
    }
  }
}

使用onWidgetAttach

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

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

函数有小部件和记录参数。你可以做widget。Record = Record,然后按钮将具有您可以在click listener

中访问的Record成员。