Extjs小部件列,小部件作为按钮

vqlkdk9b  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(235)

我有一个情况下,我需要禁用按钮(添加为窗口小部件列),当我收到一个Web Socket事件。当收到web套接字,我可能在任何页面。所以如何获得该按钮小部件的引用,并禁用它。我已经创建了一个小提琴WidgetTestFiddle任何人都可以请帮助。提前感谢

4szc88ey

4szc88ey1#

您可以使用Ext.ComponentQuery
使用查询方法,您可以在网格中搜索按钮。
您可能希望为按钮指定一个itemId(例如itemId:'widgetcolumn-button-switch'),以确保您只找到所需的按钮。
使用itemId,您的搜索查询将如下所示:'button[itemId="widgetcolumn-button-switch"]'
我用你的小提琴做了一个我自己的版本来说明我的观点: Sencha 小提琴示例

k2arahey

k2arahey2#

我认为有几种方法可以达到你想要的结果。
KaMun的答案是可行的,但是在使用缓冲存储/网格的情况下可能会比较棘手。因为这种情况下的页面是由存储内部处理的。在这种情况下,使用静态itemId是不可行的。
我建议你依靠记录数据。
每次收到WebSocket消息时,可以选择更新存储和刷新网格视图。
我已经修改了你的小提琴:

  • https://fiddle.sencha.com/#view/editor&fiddle/3a87

以下是最相关的部分:

var grid = btn.up('grid');
var models =  grid.getStore().getData().getRange(); // of cause you can use find or another way here
var model = models.filter(mod => mod.get('actualRole') === 'Follower');
model[0].set('showBtn', false);
grid.getView().refresh(); // get ref to view and refresh because data changed

在顶部,您可以查看defaultBindProperties,并可以将其更改为按钮的隐藏键。

相关问题