问题描述:
我的ComboBox的显示值和提交值分别对应着两个字段,在编辑时,如果点击右边的下拉箭头,则提交值正确,但是如果不选择,直接提价的话,提交值仍然是显示的值,搜了很久,都没有找到比较理想的解决方案,请大侠参谋参谋,看看有什么更好的解决方法?
我的代码如下,我觉着代码不会有什么问题,只是数据是否加载的问题,如果点击右侧的下拉箭头,则数据加载,如果没有点击,则不加载。这样,我理想的解决方法是,在FormPanel的数据加载完之后,能够设置combobox对应的实际值, oracle存储过程,但是,试了很久,也没有找到对应的事件。
------------------------------------------------------------------------------------------------------------------
问题补充:
是这样的,在点击“编辑”按钮,进入编辑状态,我通过一个请求,给FormPanel加载了数据,加载的数据为ServicePoint.Name,也就是说显示值。而你提供的render事件是在combobox显示时触发的,解决不了问题。如果formpanel在数据加载完后会出发某个事件应当也可以解决问题,但是一直没有找到这个事件。
------------------------------------------------------------------------------------------------------------------
问题补充:
问题补充:
是这样的,在点击“编辑”按钮,进入编辑状态,我通过一个请求,给FormPanel加载了数据,加载的数据为ServicePoint.Name,也就是说显示值。而你提供的render事件是在combobox显示时触发的,解决不了问题。如果formpanel在数据加载完后会出发某个事件应当也可以解决问题,但是一直没有找到这个事件。
------------------------------------------------------------------------------------------------------------------
问题补充:
没明白你啥意思?
------------------------------------------------------------------------------------------------------------------
问题补充:
这个value值可以动态绑定吗?
------------------------------------------------------------------------------------------------------------------
问题补充:
在什么时候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
相关的主题文章:
我的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;}}
listeners : {'beforerender' : function(t) {this.value = 1;}}
问题补充:
是这样的,在点击“编辑”按钮,进入编辑状态,我通过一个请求,给FormPanel加载了数据,加载的数据为ServicePoint.Name,也就是说显示值。而你提供的render事件是在combobox显示时触发的,解决不了问题。如果formpanel在数据加载完后会出发某个事件应当也可以解决问题,但是一直没有找到这个事件。
------------------------------------------------------------------------------------------------------------------
问题补充:
xxq 写道
这属于你自己没把加载值name : 'servicePoint',
valueField : 'ServicePointID',
displayField : 'Number', 没对应起来,要么编辑load后设置值
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
相关的主题文章: