【问题标题】:How to get rowIndex in extjs widget column如何在 extjs 小部件列中获取 rowIndex
【发布时间】:2015-08-24 14:12:32
【问题描述】:

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

【问题讨论】:

  • 好像你在这里问错了问题。可以不用onWidgetAttach模板方法吗?

标签: javascript extjs extjs6


【解决方案1】:

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

【讨论】:

  • 哎哟......一定有更好的东西......在升级应用程序的框架版本时感觉有点弱。
  • 如果使用widgetcolumn,则可以使用control.getWidgetRecord() 来获取特定记录。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    使用 onWidgetAttach

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-20
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 2013-10-02
      相关资源
      最近更新 更多