如何基于Sencha ExtJS v6中记录的属性禁用网格widgetcolumn中的小部件?
配置大致如下所示:如何基于Sencha ExtJS v6中记录的属性禁用网格widgetcolumn中的小部件?,extjs,data-binding,Extjs,Data Binding,配置大致如下所示: { xtype: 'widgetcolumn', //text: "", //localize dataIndex: "carStatusButton", //disable action for the column sortable: false, filter: false, menuDisab
{
xtype: 'widgetcolumn',
//text: "", //localize
dataIndex: "carStatusButton",
//disable action for the column
sortable: false,
filter: false,
menuDisabled: true,
widget: {
xtype: 'changeavailbutton',
//reference: "gridCarStatusButton", we cannot use reference because we get a duplicate reference warning
//text is being automatically generated from dataIndex of widgetcolumn
/*
//didn't work!
defaultBindProperty: "curCarStatus", //default is text
curCarStatus: "aaaaaaaa",
setCurCarStatus: function (value) {
this.curCarStatus = value;
},*/
/*
getCurCarStatus: function () {
return "aaaaaa"
},
setCurCarStatus: function (value) {
},*/
/*text: (function() {
return this.enableToggle;
})(),
bind: {
},*/
},
}
defaultBindProperty: "curCarStatus", //default is text
curCarStatus: "",
setCurCarStatus: function (value) {
this.curCarStatus = value;
}
- 我们考虑过使用
,但最初没有调用它更新程序(单元格、值、记录、视图)
- 我们已经考虑过使用
,但我们只能影响值,它对小部件没有任何帮助呈现程序(值、元数据、记录)
- 我们考虑在小部件中使用自定义的
,如下所示:defaultBindProperty
{ xtype: 'widgetcolumn', //text: "", //localize dataIndex: "carStatusButton", //disable action for the column sortable: false, filter: false, menuDisabled: true, widget: { xtype: 'changeavailbutton', //reference: "gridCarStatusButton", we cannot use reference because we get a duplicate reference warning //text is being automatically generated from dataIndex of widgetcolumn /* //didn't work! defaultBindProperty: "curCarStatus", //default is text curCarStatus: "aaaaaaaa", setCurCarStatus: function (value) { this.curCarStatus = value; },*/ /* getCurCarStatus: function () { return "aaaaaa" }, setCurCarStatus: function (value) { },*/ /*text: (function() { return this.enableToggle; })(), bind: { },*/ }, }
defaultBindProperty: "curCarStatus", //default is text curCarStatus: "", setCurCarStatus: function (value) { this.curCarStatus = value; }
widgetcolumn
的dataIndex
中的计算值,但对我们试图实现的目标没有任何帮助
事实是(从文档中)widgetcolumn
将dataIndex
绑定到小部件的defaultBindProperty
。一个问题是,有一个绑定发生在后台,我们不知道它的键值。如果它是一个配置,则看起来是这样的:
bind: {
text: "{unknownProperty}"
}
如果我们知道如何调用该属性,那么在各种属性中使用它可能会有所帮助,因为在我们的情况下,我们需要将多个属性绑定到小部件
实际上,我们正在寻找isDisabled
提供给ActionColumn
的类似功能,以使其位于WidgetColumn本身的WidgetColumn
:
onWidgetAttach: function (column, widget) {
if (widget.getWidgetRecord().get('property')) {
widget.setDisabled(false)
} else {
widget.setDisabled(true)
}
}
网格可以通过grid.getView().refresh()
更新,以反映任何更改您的想法不错,但它们不会动态工作,它们似乎只适用于初始渲染。最具动态性的情况是,当数据发生更改时(在运行中),小部件列的更改状态实际上是动态的。如果调用grid.getView().refresh()
,则第二个小部件列(onwidgettach)会动态工作。所以如果你能编辑你的答案。。。谢谢:)太好了,很高兴我能帮忙!