Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何基于Sencha ExtJS v6中记录的属性禁用网格widgetcolumn中的小部件?_Extjs_Data Binding - Fatal编程技术网

如何基于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)会动态工作。所以如果你能编辑你的答案。。。谢谢:)太好了,很高兴我能帮忙!