如何根据Sencha ExtJS v6中记录的属性禁用网格的widget列中的窗口小部件?

时间:2015-11-24 17:01:00

标签: extjs data-binding

或多或少的配置如下所示:

{
            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: {

                 },*/
            },
        }
  • 我们考虑过使用updater(cell, value, record, view)但最初没有调用
  • 我们考虑过使用renderer(value, metadata, record),但我们只能影响价值,它不会给我们任何小工具帮助
  • 我们考虑在窗口小部件中使用自定义defaultBindProperty,如下所示:

                 defaultBindProperty: "curCarStatus",  //default is text
    
                 curCarStatus: "",
    
                 setCurCarStatus: function (value) {
                     this.curCarStatus = value;
                 }
    

以上有助于避免在模型中创建必要的额外字段。换句话说,最初我们在模型中有一个字段,作为一个瞬态字段来获取dataIndex widgetcolumn内的计算值但是没有为我们尝试的内容提供任何帮助实现

事实是(来自文档)widgetcolumndataIndex绑定到defaultBindProperty的{​​{1}}。一个问题是在后台发生了一个绑定,我们不知道它的关键值。如果它是一个配置,它看起来像是:

widget

如果我们知道如何调用该属性,那么在各种属性中使用它可能会有所帮助,因为在我们的情况下我们需要将多个属性绑定到小部件

我们实际上正在寻找bind: { text: "{unknownProperty}" } 提供给isDisabled的{​​{1}}提供的类似功能。

1 个答案:

答案 0 :(得分:2)

在widgetcolumn中:

onWidgetAttach: function (column, widget) {
        if (widget.getWidgetRecord().get('property')) {
            widget.setDisabled(false)
        } else {
            widget.setDisabled(true)
        }
    }

可以使用grid.getView().refresh()更新网格以反映任何更改