Extjs - combobox提交值

时间:2011-03-24 06:17:27

标签: javascript extjs combobox submit


在生病之前问我的问题,我应该提一下,我读了关于这个问题的每一篇文章 我在一个独立的ajax请求中使用form.getForm().getValues()提交我的extjs表单。

我无法将组合中的值(userManager_userId)提交给服务器:

       new Ext.form.ComboBox({
            name: 'userManager_userName',
            valueField: 'userManager_userId',
            hiddenValue : 'userManager_userId',//I want to send this ti the server (Integer)
            displayField: 'userManager_userName'
            ....
    )}

组合提供/提交其显示而不是其价值 我应该提一下,当加载时,我使用Ext.data.JsonReader来从服务器收取数据 谢谢

更新

所以我做了一点测试让你看到现场:
http://fatnjazzy.byethost8.com/ 您可以查看来源以查看js来源 当我们完成时,我会把它贴在这里 现在它正在工作,但表单没有初始化它的值。

2 个答案:

答案 0 :(得分:3)

使用 hiddenName 代替名称。这将创建该名称的隐藏字段,该字段将存储当前选择的 valueField 的值。另请注意, hiddenValue 配置用于设置隐藏字段的初始值,而不是字段名称声明。

这是一个更改的ComboBox定义,它将通过 userId 的请求参数提交所选记录的 userManager_userId 字段的值:

new Ext.form.ComboBox({
    hiddenName: 'userId',
    valueField: 'userManager_userId',
    displayField: 'userManager_userName',
    // ...
});

答案 1 :(得分:2)

您的组合框是否设置了hiddenName属性?当您使用hiddenValue时,您需要使用hiddenNamehiddenValue只设置组合的默认值。通过设置它,您将无法将值发送到服务器端。

更新:由于您使用单独的Ajax请求来提交表单,为什么要使用隐藏字段来存储值?您可以从以下位置访问组合框的值:

 comboObject.getValue()

form.getForm.getValues()不提供组合值的另一个可能原因是valueField中的值不正确。在您的情况下,您有userManager_userId。这是您绑定到ComboBox的基础数据值名称吗?这是我的例子:

store: new Ext.data.JsonStore({
    fields:['item','value'],                            
    data: [
            {item:'Option 1',value: 'OP1'},
            {item:'Option 2',value: 'OP2'},
            {item:'Option 3',value: 'OP3'}
        ]                   
}),
mode: 'local',
editable: false, 
allowBlank: false,
forceSelection: true,
valueField: 'value',
displayField: 'item',
name:'tt',
id: 'tt'

这里valueField的值绑定到商店的值字段..