修改后的代码对于getvalue和setvalue不正确

问题描述 投票:0回答:1
  1. 我的代码运行正常,但他们想更改我的代码。...
  2. 他们想将setValue和getValue直接添加到用footballPanel代替运动网格,
  3. 但是将其添加后,代码无法正常工作...
  4. 您能告诉我为什么它不起作用吗?...
  5. 在下面提供我的修改后的代码...
  6. 我正在执行的UI操作是有两个单选按钮,当我单击每个单选按钮时,将打开两个不同的网格
  7. 当我切换回另一台收音机时,在其中一个网格中我们增加了价值按钮另一个网格中的值会消失,但不应消失...
  8. 修改代码后,值消失了,你能告诉我为什么吗?

这里只有修改过的代码的一部分

else {
        this.setDisabled(true);
        this.addCls("sports-item-disabled");
        if (sportsGrid.store.getCount() > 0) {
           var footballPanel = sportsGrid.up('panel');
           footballPanel.holdValue = footballPanel.getValue();
           footballPanel.setValue();
           sportsGrid.addCls("sports-item-disabled");
        }
   }

整个修改的代码:

sportsContainerHandler: function(radioGroup, newValue, oldValue, options) {
        var sportsCustomParams = options.sportsCustomParams;
        var uiPage = this.up('football-ux-sports-ui-page');
        var SportsDefinition = metamodelsHelper.getSportsDefinition(
            uiPage, sportsCustomParams.SportsHandlerDefinitionId);
        var sportsFieldParam = SportsDefinition.params['sportsMultiFieldName'];
        var sportsGrid = uiPage.queryById(sportsFieldParam.defaultValue).grid;
        if (newValue[radioGroup.name] == 'sportss') {
            this.setDisabled(false);
            this.removeCls("sports-item-disabled");
            if (sportsGrid.holdValue) {
                var footballPanel = sportsGrid.up('panel');
                footballPanel.setValue(sportsGrid.holdValue);
            }
        } else {
            this.setDisabled(true);
            this.addCls("sports-item-disabled");
            **if (sportsGrid.store.getCount() > 0) {
                var footballPanel = sportsGrid.up('panel');
                footballPanel.holdValue = footballPanel.getValue();
                footballPanel.setValue();
                sportsGrid.addCls("sports-item-disabled");
            }**
        }
    },

未修改的工作代码

sportsContainerHandler: function(radioGroup, newValue, oldValue, options) {
    var sportsCustomParams = options.sportsCustomParams;
    var uiPage = this.up('football-ux-sports-ui-page');
    var SportsDefinition = metamodelsHelper.getSportsDefinition(
        uiPage, sportsCustomParams.SportsHandlerDefinitionId);
    var sportsFieldParam = SportsDefinition.params['sportsMultiFieldName'];
    var sportsGrid = uiPage.queryById(sportsFieldParam.defaultValue).grid;
    if (newValue[radioGroup.name] == 'sportss') {
        this.setDisabled(false);
        this.removeCls("sports-item-disabled");
        if (sportsGrid.holdValue) {
            var footballPanel = sportsGrid.up('panel');
            footballPanel.setValue(sportsGrid.holdValue);
        }
    } else {
        this.setDisabled(true);
        this.addCls("sports-item-disabled");
        if (sportsGrid.store.getCount() > 0) {
            sportsGrid.holdValue = sportsGrid.store.data.items;
            sportsGrid.store.loadData([]);
            sportsGrid.addCls("sports-item-disabled");
        }
    }
},
javascript html extjs extjs4 dom-events
1个回答
0
投票
[getValue()不是ExtJS Panel class的方法。

您的代码从sportsGridExt.grid.Panel)更改为footbalPanelExt.panel.Panel)无效,因为它们来自不同的类,因此具有不同的属性和方法。

如果要使此代码正常工作,则需要实现getValue()setValue()。例如,类似:

在FootballPanel班上:

getValue: function () { return this.down('grid').store.data.items; }, setValue: function (newValue) { if (!newValue) newValue = new Array(); this.down('grid').store.loadData(newValue); },

并使用修改后的代码:

sportsContainerHandler: function(radioGroup, newValue, oldValue, options) { var sportsCustomParams = options.sportsCustomParams; var uiPage = this.up('football-ux-sports-ui-page'); var SportsDefinition = metamodelsHelper.getSportsDefinition( uiPage, sportsCustomParams.SportsHandlerDefinitionId); var sportsFieldParam = SportsDefinition.params['sportsMultiFieldName']; var sportsGrid = uiPage.queryById(sportsFieldParam.defaultValue).grid; if (newValue[radioGroup.name] == 'sportss') { this.setDisabled(false); this.removeCls("sports-item-disabled"); if (sportsGrid.holdValue) { var footballPanel = sportsGrid.up('panel'); footballPanel.setValue(sportsGrid.holdValue); } } else { this.setDisabled(true); this.addCls("sports-item-disabled"); if (sportsGrid.store.getCount() > 0) { var footballPanel = sportsGrid.up('panel'); footballPanel.holdValue = footballPanel.getValue(); footballPanel.setValue([]); sportsGrid.addCls("sports-item-disabled"); } } },

© www.soinside.com 2019 - 2024. All rights reserved.