comboBox是动态的,二级联动的.由于业务需要,在加载页面时一定要选中从后台取出的其中一条数据(已实现),但是
setValue()设置的是displayField 的值,我想问怎么动态设置valueField 的值..急..!!!
[code="java"] swjgStore = new Ext.data.Store({
url : 'getSwjgComboBoxValuePeccancyRecord.action',
reader : new Ext.data.JsonReader({
root : 'swjgRows'
}, Ext.data.Record.create([{
name : 'orgId'
}, {
name : 'name'
}]))
});
swjgStore.load();
var swjgCombo = new Ext.form.ComboBox({
store : swjgStore,
fieldLabel : '税务机关',
displayField : 'name',
labelStyle : "text-align:left;width:60;",
anchor : '90%',
hiddenName:'orgId',
typeAhead : true,
valueField : 'orgId',
editable : false,
forceSelection : true,
triggerAction : 'all',
selectOnFocus : true
});
swjgStore.on('load', function() {
var swjgComboValue = swjgStore.getAt(0);
swjgCombo.setValue(swjgComboValue.get('name'));
});
var sgyStore = new Ext.data.Store({
url : 'getSgyComboBoxValuePeccancyRecord.action',
reader : new Ext.data.JsonReader({
root : 'sgyRows'
}, Ext.data.Record.create([{
name : 'code'
}, {
name : 'name'
}]))
});
sgyStore.on("beforeload", function(store, options) {
var swjgId = swjgCombo.getValue();
var new_params = {
swjg : swjgId
};
Ext.apply(options.params, new_params);
baseParams : {
swjgId : swjgId
}
});
swjgCombo.on('select', function() {
sgyCombo.clearValue();
sgyStore.load({});
});
var sgyCombo = new Ext.form.ComboBox({
store : sgyStore,
fieldLabel : '税管员',
displayField : 'name',
valueField : 'code',
typeAhead : true,
editable : false,
forceSelection : true,
triggerAction : 'all',
emptyText : '请选择...',
selectOnFocus : true,
labelStyle : "text-align:left;width:60;",
anchor : '90%'
});
[/code]
提交到后台的值是
hiddenName属性设置的值。 切记!!!
给你个参考
[code="java"]var alertLevel = new Ext.form.ComboBox( {
id:'cmb_alertLevel',
hiddenName:"level", //提交到后台的input的name
store: new Ext.data.SimpleStore({
fields: ['myId', 'displayText'],
data: [['0', 'Emergency'], ['1','Alert'],
['2','Critical'],['3','Error'],
['4','Warning'],['5','Notice'],
['6','Informational'],['7','Debug']]
}),
valueField: 'myId', //option.value
displayField: 'displayText', //option.text
typeAhead : true,
triggerAction : 'all',
emptyText : '所有',
mode: 'local',
applyTo : 'alertLevel'
});[/code]
[quote]重要属性设置 hiddenName:'level'。 [/quote]
后台直接通过 String alertLevel = request.getParameter("level");获取值
添加
[code="java"]swjgCombo.setRawValue(swjgComboValue.get('name'));[/code]
试一试
roleinfo_ds = new Ext.data.Store({
//autoLoad : true,
//baseParams : {
// start:0,
// limit:1000
//},
proxy: new Ext.data.HttpProxy({url:"<%=path%>/roleInfoAction.do?method=getAllRoleInfo"}),
reader: new Ext.data.JsonReader({
root:'roleInfoList',
totalProperty : 'roleInfoTotal'
},
[
{name: 'id',mapping: 'id',type: 'int'},
{name: 'roleCode',mapping: 'roleCode',type: 'string'},
{name: 'name',mapping: 'name',type: 'string'}
])
});
roleinfo_ds.load({params:{start:0, limit:1000}});
roleinfo_cmb = new Ext.form.ComboBox({
id:'customservice_query_roleCode',
name:'customservice_query_roleCode',
fieldLabel: '角色名称',
width:80,
xtype:'combo',
typeAhead: true,
//readOnly:true,
store:roleinfo_ds,
loadingText: '',
valueField: 'id',
displayField:'name',
mode: 'remote',
triggerAction: 'all',
editable:false,
emptyText: '所有',
selectOnFocus:true,
forceSelection: true,
value: '',
resizable:true
});
不是很明白你想要做什么,是不是打开页面时就选中swjg的第一个选项,然后sgyCombo也要跟着联动?
如果是这样的话,那试试这样
[code="java"]
swjgStore.on('load', function() {
var swjgComboValue = swjgStore.getAt(0);
swjgCombo.setValue(swjgComboValue.get('orgId'));
swjgCombo.fireEvent('select', swjgCombo, swjgComboValue , 0);
});
[/code]