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:获取特定行的操作列的主要内容,如果未能解决你的问题,请参考以下文章