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

Posted

技术标签:

【中文标题】Ext JS:获取特定行的操作列【英文标题】:Ext JS: Getting a specific row's action column 【发布时间】:2014-03-04 17:35:34 【问题描述】:

我有一个网格,其中每一行都包含一个操作列。此操作列是一个编辑图标,当用户单击编辑图标时,我将启动一些 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,但我想这不是这个action 列的真正含义吗?另外,有没有一种简单的方法可以将这个项目作为一个 Ext JS 类来访问?

编辑:我看过以下线程,但它们更多地处理渲染行...我的行已经渲染:

Hide Icon in Action Column for Particular Row

How to Disable Action Column Item for a Single Row

【问题讨论】:

【参考方案1】:

我已决定不删除和添加课程。我目前正在以与上述类似的方式进行操作,但如下所示:

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,仍然可以单击操作图标。通过隐藏/显示,我们摆脱了这种可能性。这并不理想,但它可以作为一种快速破解。

【讨论】:

所以我的解决方案唯一的问题是,如果视图刷新,隐藏不会保持设置...我尝试使用Ext.get而不是Ext.fly,但无论如何,当视图刷新时,图标会重新显示...我需要做的是在我使用 hide 方法时设置了图标的 HTML,因此当视图刷新时,它会将 HTML 视为隐藏。有什么建议吗? 我最终放弃了这种方法,转而使用 getClass 方法作为 ActionColumn 的 items。与我的other question有关。

以上是关于Ext JS:获取特定行的操作列的主要内容,如果未能解决你的问题,请参考以下文章

如何仅获取特定行的列均值?

获取javascript中动态行的特定列值

如何从选定行的网格面板中仅获取特定值

每天获取一个非常大的 Pandas DataFrame 中所有行的总和,这些行在两个特定列中匹配

Ext JS:如何在具有多个列值的网格中查找记录

c# 获取dataGridView选中行的行数