JSP 内で Ext JS コンボボックスを使用しています。ページを初めてロードしたときに、コンボボックスが表示されません。関連するストアが定義されていないというエラーが Firebug コンソールに表示されます。(TypeError: cpStore is undefined)
ただし、次のリクエストは正常に機能することに気付きました。
この問題を回避するために私ができることを提案してください。
function displayCPBox(idPrefix){
var cpSelectList = Ext.create ('Ext.data.JsonStore', {
storeId: idPrefix+'cpSelectStore',
remoteSort: true,
autoLoad: true,
proxy: {
type: 'ajax',
url: proyecto + 'extjs/data/cpData.jsp',
reader: {
type: 'json',
root: 'data',
idProperty: 'id'
}
},
fields: [
{name:'id', type: 'float'},
{name:'codigo', type: 'string'}
]
});
var multiCombo = Ext.create('Ext.form.field.ComboBox', {
fieldLabel: 'CP',
renderTo: idPrefix+'cpSelectCombo',
id: idPrefix + 'cpSelectComboBox',
displayField: 'codigo',
valueField : 'id',
width: 200,
labelWidth: 50,
store: cpSelectList,
queryMode: 'remote',
minChars: 1,
cls : 'cp-margin',
listeners :{
select: function( combo, records, eOpts ){
getZipInfoForCodigoFormFields(records,document.getElementById(idPrefix+'localidad') ,document.getElementById(idPrefix+'provincia'),document.getElementById(idPrefix+'pais'),doc ument.getElementById(idPrefix+'zona'));
}
}
});
}
ロード中に値を設定するコード:
var cpStore = Ext.data.StoreManager.lookup('<%=idPrefix%>'+'cpSelectStore');
cpStore.on('load',function() {
<%
Long zipCodeForDisplayLong = oportunidad.getId_lib_cp();
long zipCodeForDisplay = (zipCodeForDisplayLong == null) ? -1 : zipCodeForDisplayLong.longValue();
%>
var selectedzipCodeValue= <%=zipCodeForDisplay %>;
if(selectedzipCodeValue != -1)
{
var selectedCPVal = cpStore.findRecord("id",selectedzipCodeValue);
Ext.getCmp('<%=idPrefix%>'+'cpSelectComboBox').setValue(selectedCPVal.get("id"));
}
});
cpStore.load();