无法在 ExtJS4 中加载组合存储
Posted
技术标签:
【中文标题】无法在 ExtJS4 中加载组合存储【英文标题】:Can´t load store of a combo in ExtJS4 【发布时间】:2016-02-10 11:16:58 【问题描述】:加载视图时,我无法加载商店数据。 这是我的商店: (strEstadosMtoOrganismos.js)
Ext.define('TelicitaApp.store.filtros.strEstadosMtoOrganismos',
extend: 'Ext.data.Store',
model: 'TelicitaApp.model.filtros.mdlEstadosMtoOrganismos',
autoLoad: false,
proxy:
type: 'ajax',
api: read: './data/php/filtros/Tmc_EstadosMtoOrganismos.php?despliegue='+TelicitaApp.Settings.despliegue,
reader:
type: 'json',
root: 'data',
totalProperty: 'total',
successProperty: 'success'
);
这是我的看法: (viewGridMtoOrganismos.js)
Ext.define('TelicitaApp.view.mantenimientos.organismos.viewGridMtoOrganismos',
extend: 'Ext.grid.Panel',
alias: 'widget.viewGridMtoOrganismos',
requires: [
],
initComponent: function()
var toolbar1 =
xtype : 'toolbar',
dock : 'top',
items: [
iconCls:'limpiar-icon', text:'Limpiar', handler: function() ,
,
'->',
iconCls:'refresh', text:'Recargar', handler: function() ,
]
;
var toolbar2 =
xtype: 'toolbar',
dock: 'top',
items: [
text:'<span style="color:#C85E00;">Estado</span>',
xtype: 'combo',
value: 'Todos',
queryMode: 'remote',
triggerAction: 'all',
editable: false,
displayField: 'label',
valueField: 'value',
store: 'filtros.strEstadosMtoOrganismos'
]
Ext.apply(this,
frame: true,
bodyPadding: '5 5 0',
fieldDefaults:
labelAlign: 'top',
msgTarget: 'side'
,
forceFit: true,
height: 300,
stripeRows: true,
loadMask: true,
tbar:
xtype: 'container',
layout: 'anchor',
defaults: anchor: '0',
defaultType: 'toolbar',
items: [
toolbar1,toolbar2
]
,
columns: [
header:'<span style="color:blue;">Id</span>', xtype: 'numbercolumn',format:'0', width:35, sortable: true,
]
);
this.callParent(arguments);
);
这是我的控制器: (ctrlMtoOrganismos.js)
Ext.define('TelicitaApp.controller.ctrlMtoOrganismos',
extend: 'Ext.app.Controller',
models:[
'mantenimientos.organismos.mdlMtoOrganismos',
'filtros.mdlEstadosMtoOrganismos'
],
stores:[
'mantenimientos.organismos.strMtoOrganismos',
'filtros.strEstadosMtoOrganismos'
],
views: [
'mantenimientos.organismos.viewModuloMtoOrganismos'
],
refs: [
],
init: function()
this.control(
);
,
onLaunch: function()
,
);
如果我将 store 中的 autoload 属性设置为 true,它会在应用启动时加载数据。但我想在加载视图时加载数据。 加载视图后,如果我展开组合,它将启动 php 文件以填充组合,但我希望它在加载视图后自动加载数据,而不是在展开组合时。
【问题讨论】:
【参考方案1】:替换
this.callParent(arguments);
与
this.callParent(arguments);
this.down('combo').getStore().load();
你可以走了。
【讨论】:
它有效,现在有两件事:1. 如果我有更多组合,使用 this.down('combo').getStore().load();加载所有组合的商店? 2. 展开combo时如何避免再次启动填充store的php? 1.不,down
会给你第一个。您可以迭代 query
来加载所有这些。 2.如果设置queryMode:'local',则combo在打开菜单时不会触发store load。
还有什么更好,在视图中或控制器中加载商店?以上是关于无法在 ExtJS4 中加载组合存储的主要内容,如果未能解决你的问题,请参考以下文章