我有一个组合形式(hiddenName como)。
表单从服务器加载其数据并自动设置“selectedValue”。
组合在表单加载其数据之前从服务器加载其值。
如果我点击提交,即使我设置了hiddenName,displayValue也会被发送到服务器而不是值。
但是如果我更改了组合值,那么它将按预期提交值而不是displayValue。
为什么表单设置的初始值会阻止组合提交其值?
这是组合和商店:
var store = new Ext.data.JsonStore({
autoLoad: true,
url: config.url,
root: 'data',
methos:'POST',
fields:[{name:'userManager_employeeId'},{name:'userManager_userName'}] });
var combo = new Ext.form.ComboBox({
hiddenName:'userManager',
valueField: 'userManager_employeeId',
displayField: 'userManager_userName',
forceSelection: true,
mode: 'remote',
typeAhead: true,
lazyInit :false,
lazyRender:false,
fieldLabel: config.title,
emptyText:'Select a value',
roles:config.roles,
修改
这是表单数据:
{
"data": [
{
"employee_employeeId": 3,
"Affiliate_affiliateId": 8,
"parent_affiliateId": 8,
"userManager_employeeId": 1,
"Affiliate_email": "avi@finexo.co.il",
"parent_name": "First Affiliate",
"userManager": "admin",
"Affiliate_name": "First Affiliate",
"user_userName": "admin",
"user_userId": 1
}
]
}
这是组合数据:
{
"data": [
{
"userManager_userName": "admin",
"userManager_employeeId": 1
},
{
"userManager_userName": "admin2",
"userManager_employeeId": 4
}
]
}
这是表格阅读器:
reader: new Ext.data.JsonReader({
root: 'data',
fields: [{
name: 'userManager'
}]
})
这是表单数据:
{"data":[{"userManager":"admin"}]}
我也尝试过:
{"data":[{"userManager":"1"}]}
如果表单数据是“admin”,我会在显示“admin”中看到,但提交的值也是“admin”。 如果表单数据为“1”,我在显示“1”和提交值“1”中看到。 我如何在显示'admin'中看到并提交值(“1”)?感谢。
答案 0 :(得分:1)
我已经遇到了这个问题,我已经有了一个插件,我将其包含在带有组合的表单中。在您的情况下,您需要关闭组合商店中的autoload
。使用组合的valueField填充表单,就像您提供的第二个示例一样。然后修改服务器端代码以搜索valueFields 或 displayFields,而不仅仅是displayFields。然后,您可以在表单加载后执行此操作:
combo.getStore().load({
params: { query: combo.getValue()},
callback: function () { combo.setValue(combo.getValue()) }
});
这将仅为id 1向服务器发送请求,服务器将使用组合数据来回复以修复其displayField。然后setValue
设置displayField和valueField。这是一种解决方法,但它确实有效。