Ext JS:获取特定行的操作列

时间:2014-03-04 17:35:34

标签: gridview extjs row extjs4.2

我有一个网格,其中包含每行的操作列。此操作列是一个编辑图标,当用户单击编辑图标时,我将启动一些websocket事件,这些事件最终会流向当前连接到该应用程序的其他用户。我想要做的是为其他用户灰显此编辑图标。所有这些代码都在工作,除了:我不知道如何访问实际行的动作列对象。

我可以使用网格视图访问它并抓取该单个节点,然后设置某种类型的CSS,如下所示:

var rowHtml = this.getView().getNode(index);
if (rowHtml) {
  var rowDom = Ext.fly(rowHtml);
  if (rowDom) {
    rowDom.down('.someclass').removeCls('enabled').addCls('disabled');
  }
}

这应该有效,但我也想更新工具提示,一般来说,我只是希望能够访问这个元素。

所以,我想主要的问题是,当创建这个动作列时,它是作为按钮还是其他一些Ext JS元素创建的? API声明子组件的defaultType gridcolumn ,但我想这不是这个操作列的真正含义?另外,有一种简单的方法可以作为Ext JS类访问这个项目吗?

编辑:我已经看到了以下线程,但他们更多地处理了渲染行...我的行已经呈现:

Hide Icon in Action Column for Particular Row

How to Disable Action Column Item for a Single Row

1 个答案:

答案 0 :(得分:0)

我决定不删除和添加课程。我目前正以与上述类似的方式进行此操作,但是像这样:

var rowHtml = this.getView().getNode(index);
if (rowHtml) {
  var rowDom = Ext.fly(rowHtml);
  if (rowDom) {
    rowDom.down('.someclass').hide();  // or show, based on some other logic
  }
}

我去隐藏/显示,因为如果我只是编辑CSS,仍然可以点击操作图标。通过隐藏/显示,我们摆脱了这种可能性。这不是理想的,但它可以作为一个快速的黑客。