这里只有修改过的代码的一部分
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");
}
}
},
getValue()
不是ExtJS Panel class的方法。您的代码从sportsGrid
(Ext.grid.Panel)更改为footbalPanel
(Ext.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"); } } },