ComboBox的提交值有关问题

问题描述:
    我的ComboBox的显示值和提交值分别对应着两个字段,在编辑时,如果点击右边的下拉箭头,则提交值正确,但是如果不选择,直接提价的话,提交值仍然是显示的值,搜了很久,都没有找到比较理想的解决方案,请大侠参谋参谋,看看有什么更好的解决方法?
    我的代码如下,我觉着代码不会有什么问题,只是数据是否加载的问题,如果点击右侧的下拉箭头,则数据加载,如果没有点击,则不加载。这样,我理想的解决方法是,在FormPanel的数据加载完之后,能够设置combobox对应的实际值, oracle存储过程,但是,试了很久,也没有找到对应的事件。
   /**
 * 商户下拉框
 * 
 * @class ServicePointCombo
 * @extends Ext.form.ComboBox
 */
ServicePointCombo = Ext.extend(Ext.form.ComboBox, {
	name : 'servicePoint',
	hiddenName : 'ServicePointID',
	readOnly : false,error C2065,
	valueField : 'ServicePointID',
	displayField : 'Number',
	typeAhead : true,
	mode : 'remote',
	triggerAction : 'query',
	lazyInit : false,
	emptyText : '请选择',
	selectOnFocus : true,
	allowBlank : false,
	typeAheadDelay : 10000,
	isLoaded : false,
	store : new Ext.data.JsonStore({
				url : '/Terminal/ServicePointList',
				root : 'result',
				totalProperty : 'total',
				forceSelection : true,
				fields : [{
							name : 'ServicePointID',
							type : 'string'
						}, {
							name : 'Name',
							type : 'string'
						}, {
							name : 'Number',
							type : 'string'
						}],
				listeners : {
					load : function() {
						isLoaded = true;
					}
				}
			}),
	minListWidth : 260,
	pageSize : 10,
	tpl : new Ext.XTemplate(
			'<div class="x-grid3"><div><table>',
			'<thead class="x-grid3-header"><tr class="x-grid3-hd-row">',
			'<td class="x-grid3-hd x-grid3-cell x-grid3-hd-inner" style="width: 80px;">商户号</td>',
			'<td class="x-grid3-hd x-grid3-cell" style="width: 200px;">名称</td>',
			'</tr></thead><tbody>',
			'<tpl for=".">',
			'<tr class="x-combo-list-item">',
			'<td class="x-grid3-col x-grid3-cell"><div class="x-grid3-cell-inner"  style="font-size:12px;">{Number}</div></td>',
			'<td class="x-grid3-col x-grid3-cell"><div class="x-grid3-cell-inner"  style="font-size:12px;">{Name}</div></td>',
			'</tr>', '</tpl>', '</tbody></table></div></div>')
});

// 注册
Ext.reg('servicepointcombo', ServicePointCombo);


------------------------------------------------------------------------------------------------------------------
问题补充:
是这样的,在点击“编辑”按钮,进入编辑状态,我通过一个请求,给FormPanel加载了数据,加载的数据为ServicePoint.Name,也就是说显示值。而你提供的render事件是在combobox显示时触发的,解决不了问题。如果formpanel在数据加载完后会出发某个事件应当也可以解决问题,但是一直没有找到这个事件。

------------------------------------------------------------------------------------------------------------------
问题补充:
xxq 写道
如果没选中,应该显示的是'请选择',这会提交过去吗?最好是加上默认值,在加载事件加上值,这样总会有值了
listeners : {'beforerender' : function(t) {this.value = 1;}}

问题补充:
是这样的,在点击“编辑”按钮,进入编辑状态,我通过一个请求,给FormPanel加载了数据,加载的数据为ServicePoint.Name,也就是说显示值。而你提供的render事件是在combobox显示时触发的,解决不了问题。如果formpanel在数据加载完后会出发某个事件应当也可以解决问题,但是一直没有找到这个事件。


------------------------------------------------------------------------------------------------------------------
问题补充:
xxq 写道
这属于你自己没把加载值name : 'servicePoint',  
    valueField : 'ServicePointID',  
    displayField : 'Number', 没对应起来,要么编辑load后设置值


没明白你啥意思?

------------------------------------------------------------------------------------------------------------------
问题补充:
whacker 写道
直接在里面加个属性:value: ''

这个value值可以动态绑定吗?

------------------------------------------------------------------------------------------------------------------
问题补充:
whacker 写道
setValue()

在什么时候setValue,我需要的结果是在数据加载完后setValue,可以我没找到类似的事件;我现在想到的方法是覆盖setValue方法,这样可能解决。但是也还有时间去试一试。我现在用的方法是比较老土的方法,在提交之前判断,然后setValue。不知有无更好的建议?


------解决方案--------------------------------------------------------
如果没选中,应该显示的是'请选择',这会提交过去吗?最好是加上默认值,在加载事件加上值,这样总会有值了
listeners : {'beforerender' : function(t) {this.value = 1;}}


------解决方案--------------------------------------------------------
这属于你自己没把加载值name : 'servicePoint',  
    valueField : 'ServicePointID',  
    displayField : 'Number', 没对应起来,要么编辑load后设置值

------解决方案--------------------------------------------------------
forceSelection : true,  
放到Combobox的属性里,不要放到store的属性里, Store是没有这个属性的
------解决方案--------------------------------------------------------
直接在里面加个属性:value: ''
------解决方案--------------------------------------------------------
setValue()
------解决方案--------------------------------------------------------
可参考:
ComboBox有关问题,   http://www.myexception.cn/vb-dotnet/54372.html


相关的主题文章:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值