ExtJS ComponentQuery和动态内容

时间:2016-06-13 23:45:35

标签: javascript extjs

我有一个包含多个网格的布局,它们都使用RowEditing插件。我试图使用Ext.ComponentQuery.query来访问特定网格上的嵌入式RowEditor按钮,但我无法弄清楚如何正确遍历事物。我想知道它是否与RowEditor和动态添加的按钮有关 - 虽然我找不到任何可以确认预期与否的东西。

编辑添加jsfiddle http://jsfiddle.net/ttubbs/eadfpxao/

在每个网格中激活RowEditing后(双击每个网格中的一行),在控制台中运行以下内容会产生指示结果......

Ext.ComponentQuery.query("roweditorbuttons") // two results
Ext.ComponentQuery.query("roweditorbuttons > #update") // two results
Ext.ComponentQuery.query("#grid1 > roweditorbuttons") // no results
Ext.ComponentQuery.query("#grid1 >  #update") // no results

Ext.ComponentQuery.query("roweditorbuttons > button[text=Update]") // two results

我需要能够执行以下操作,但查询不起作用:

Ext.ComponentQuery.query("#grid2 > #update") // give me the update button in #grid2
Ext.ComponentQuery.query("#update").up().itemId === "grid1" // determine which grid my button is in

问题是:

  • 给定一个网格(#grid1 [1]),我如何才能访问行编辑器 纽扣?
  • 给定一个按钮(#update [0]),我该如何访问它 父网格?

2 个答案:

答案 0 :(得分:0)

您可以尝试这个选择

Ext.ComponentQuery.query('roweditorbuttons > button[text=Update]')[0]

请找截图。enter image description here

答案 1 :(得分:0)

首先,您应该在此示例中将网格中的itemId更改为id。 “itemId”在您的示例中无关紧要。 假设你的网格有id=grid1,你的roweditor插件有pluginId=roweditor

var plugin = Ext.getCmp("grid1").getPlugin("roweditor");
// you can get the update button like this
var updateBtn = plugin.editor.floatingButtons.down("button");
// you can get the grid from the plugin as well
var grid = plugin.grid;