现有个“name”属性,与它关联的有个“beanname”,我希望在一个comb的下拉框中显示的是name,后台传入的值是beanname,但保存在表单中显示的名称是name,我的代码如下:
xtype : "combo",
fieldLabel : "example",
hiddenName : "node.Mode",(数据库中对应字段为Mode)
valueField : 'beanname',
displayField : 'name',
lazyInit : true,
forceSelection : true,
store : ModeStore
                        triggerAction: 'all',
width : 200,
allowBlank : false
我这样写的话,表单中显示的就是beanname值了,但如果valueField改成name,表单中显示的是name,但后台传入的就不是beanname了,希望能指点一二!!!

解决方案 »

  1.   

    把你的代码说清楚,是在JSP页面还是?
      

  2.   

    的确不太清楚你说什么。displayField 是定义combo要显示出来的数据,而 valueField 简单来说是定义 每一条记录的 ID 值:
    combo.on('select',function(combo,record,index){
    alert(combo.value); // combo.value 即是valueField:'name' 所定义的name的值
    });
      

  3.   

    我是要把comb中选择的值也就是name保存在一个表格中,就是一个新建的过程,在表格中显示出来的字是name,但其后台传值应该是beanname
      

  4.   

    看你代码这样就可以了啊。我的也差不多啊store : storeMenu,
    allowBlank : false,
    triggerAction : 'all',
    displayField : 'name',
    valueField : 'id',
    fieldLabel : '角色',
    tabIndex : 5,
    hiddenName : 'name',
    editable : false,
    emptyText : '请选择一个角色....'
      

  5.   

    楼上的不对啊,像你这么写的话 displayField : 'name',后台传入的值就是name了,而不是beanname
      

  6.   

    ExtJS的显示和传递有关的代码只有下面的四句hiddenName : "node.Mode",(数据库中对应字段为Mode) 
    valueField : 'beanname', 
    displayField : 'name', 
    store : ModeStore xtype : "combo", 
    hiddenName : 'beanname',(数据库中对应字段为Mode) 
    valueField : 'beanname', 
    displayField : 'name', 
    store : ModeStore 
    hiddenName : "node.Mode",(数据库中对应字段为Mode) 
    这里楼主犯了一个概念错误,hiddenName和你的数据库中对应的字段没有关系,
    他只是你传递到前台的值和你想要传递到后台的值有关但是如果你的beanname不是唯一的,你需要另外想办法。
      

  7.   

    多谢楼上指出,其实我comb中的这段传值代码并没有什么问题,就是希望保存在form表单中显示出的是name而不是beanname,是不是要加一段显示转换代码之类的?