所以我有一个组合框,它是为某个视图动态加载的。每当我将queryMode设置为remote时,如果我单击组合框,它就会加载数据,但如果设置为local,它就不会显示任何数据。我的商店将正确返回请求的数据,只是它不会显示在组合框中。
我是不是遗漏了什么?希望有人能帮助我。
这是我的带有组合框的视图控制器:
Ext.define('Stm.controller.HpUpdate', {
extend: 'Ext.app.Controller',
requires: [
'Stm.view.contents.hpupd.Detail'
],
stores: [
'SiteDomain'
],
fromDetail: false,
isAbort: false,
isDataSeted: false,
firstSorters: undefined,
recordId: undefined,
isUpdate: false,
init: function() {
this.callParent(arguments);
console.log(Ext.getDisplayName(arguments.callee));
this.control({
'hup-list': {
afterRender: this.setupStmList
}
});
this.addRef([{
ref: 'list',
selector: 'hup-list'
},
{
ref: 'detail',
selector: 'hup-detail'
},
]);
},
setupStmList: function() {
console.log(Ext.getDisplayName(arguments.callee));
var me = this;
var store = me.getSiteDomainStore();
var record = Cps.Util.baseRecord();
store.load({
params: param,
callback: function(records, operation, success) {
var response = operation.response;
if (!response || response.length === 0) {
return;
}
var responseText = response.responseText;
if (!responseText || responseText.length === 0) {
return;
}
var res = Ext.decode(responseText);
if (res.common.st === 'mainte' || res.common.st === 'abort') {
return;
}
if (res.common.st === 'ng') {
Cps.Util.alert(res.common.msg);
return;
}
if (records.length === 0) {
return;
}
me.getList().down('#dtAplDateTimeFrom').down('#dateField').focus();
}
});
me.firstSorters = this.getHpUpdateStore().getSorters();
},
});
这是我的观点:
Ext.define('Stm.view.contents.hpupd.List', {
extend: 'Ext.container.Container',
alias: 'widget.hup-list',
layout: {
type: 'vbox',
align: 'stretch'
},
items: [{
xtype: 'cps-combobox',
fieldLabel: 'Domain',
itemId: 'cmbSiteDomain',
queryMode: 'local',
store: {
type: 'sitedomain'
},
width: 350,
displayField: 'siteDomain',
valueField: 'siteId',
}],
});
商店:
Ext.define('Stm.store.SiteDomain', {
extend: 'Extends.data.Store',
alias: 'store.sitedomain',
requires: [
'Cps.Setting',
'Stm.model.SiteInfo'
],
model: 'Stm.model.SiteInfo',
pageSize: Stm.Const.controller.dataCountLimit,
proxy: {
type: 'ajax',
url: Cps.Setting.getEntryUrl() + '/stm/st-update/site-domain',
reader: {
type: 'json',
rootProperty: 'data'
},
actionMethods: {
create: 'POST',
read: 'POST',
update: 'POST',
destroy: 'POST'
}
}
});
2条答案
按热度按时间d7v8vwbk1#
当您将
queryMode
设置为e1d1e时,这意味着不会从远程源加载数据,数据应该由例如Ext.data.ArrayStore
定义如果希望只从远程源加载一次数据并在本地组合查询数据,则应手动添加存储项
定义
combo
,如:然后将项目添加到
combo
中,如:注意:这是您应该添加实现的示例代码
zysjyyx42#
这正是我正在做的。首先,我通过添加商品来建立我的商店。然后我使用组合框中的存储和querymode:local。当我展开组合框时,没有显示任何项。当我将querymode更改为remote时,扩展时会显示这些项,但它们是灰色的,因为存储尝试从服务器加载数据,这当然会失败。我不知道该怎么办。在我看来它像一只虫子。