combox是关联后台数据库的id和name对应,如果用鼠标点击下拉框选择的话 可以获取id,但是如果用手动输入的话 ,虽然输入的值也是数据库中有的值  但是保存的时候  获取到的却是name值 不是id值我 保存的时候  要保存id值

解决方案 »

  1.   

    //托运方式-------------------------------------------------
        var comtyfs_httpProxy = new Ext.data.HttpProxy({
                    url : "Data/dangan/GetTyfs.aspx"            });
        var comtyfs_create = new Ext.data.Record.create([{
                    name : "id",
                    mapping : "id"
                }, {
                    name : "name",
                    mapping : "name",
                    type : "string"
                }]);    var comtyfs_jsonReader = new Ext.data.JsonReader({
                    totalProperty : "totalProperty", // 总记录数
                    root : "data" // 所有的数据(json对象数组)
                }, comtyfs_create)    var tyfs_Store = new Ext.data.Store({
                    proxy : comtyfs_httpProxy,
                    reader : comtyfs_jsonReader
                });
                
        tyfs_Store.load();    var combo_tyfs = new Ext.form.ComboBox({
            store:tyfs_Store,
            id:'tyfs_add',
            name:'tyfs_add',
            hiddenName:'com_tyfshidden',
            fieldLabel:'托运方式',
            width:85,
            typeAhead: true,
            emptyText:'请选择...',
            triggerAction:'all',
            valueField:'id',
            displayField:'name',
            selectOnFocus:true,
            allowBlank:false,
            //editable:true,
            //hiddenValue:01,
            //value:'汽运普件',
            mode:'remote',
            blankText:'请选择托运方式',
            listeners:{
                'beforequery':function(f){
                     
                     var tyfsbm = Ext.getCmp("tyfs_add").getRawValue();
                     
                     Ext.Ajax.request({
                        url:'data/jydbh/getTyfsbm.aspx?tyfsbm='+tyfsbm,
                        success:function(response){
                            var tmp = response.responseText.split("|");
                            if(tmp!=""){
                                AddPublishForm.getForm().findField("tyfs_add").setValue(tmp[0]);
                            }
                            else
                            {
                                AddPublishForm.getForm().findField("tyfs_add").setValue("");
                            }
                            
                        }
                     })
                }
            }
        });  
      

  2.   

    listeners:{
      'beforequery':function(f){是为了在combox中可以手动输入值(比如输入编码自动去查询对应的name 并显示到combox中)
    如果把beforequery换成select 的话 每次都要用鼠标去选 不能提高录入的速度要求既能提高录入速度  又能保存手动录入值(name)对应的id
      

  3.   

    谁给改造改造 
    combx 数据是从后台获取 关联数据库数据
    id name对应  
    要求:1、可以手动输入id  查询到name 赋值combox本身
          2、可以手动输入name  
         3、可以选择 下拉框 找到对应的值  
          4、在下拉框中有一项为....按钮 选择的话 可以弹出一个对话框(有筛选的条件)。供用户选择 
      

  4.   

    1.这个listener可以解决吧
    2.这个让combox可编辑就可以了
    3.这是基本功能
    4.这个貌似不好做,需要更多代码
      

  5.   

    其实前面三个都已经实现了,就是保存的时候  
    1、如果是手动录入的话 保存的是name 不是id  
    2、如果是选择的话 保存的是id 如何是手动录入的文本对应数据库中的id  保存呢?
      

  6.   


    我没有试过手工录入的也能保存id,如果要实现的话,前台要加上非常多的代码吧,
    我实际在做的时候都是保存name,然后再后台用php转化为id的
      

  7.   

    问题是手动输入保存的是name  选择的时候保存的是id  同个字段保存的有两种结果  后面处理的话 很那处理的
      

  8.   

    问题是手动输入保存的是name 选择的时候保存的是id 同个字段保存的有两种结果 后面处理数据的话 很难处理的 
     
    问题是手动输入保存的是name 选择的时候保存的是id 同个字段保存的有两种结果 后面处理数据的话 很难处理的 
     
    问题是手动输入保存的是name 选择的时候保存的是id 同个字段保存的有两种结果 后面处理数据的话 很难处理的 
     
    问题是手动输入保存的是name 选择的时候保存的是id 同个字段保存的有两种结果 后面处理数据的话 很难处理的 
     
      

  9.   

    LZ先慢慢整理一下思路吧一:LZ,你的COMBOX設置是以ID為值的。見valueField:'id',
           假如,你要的是name,就設置該字段為name。那就統一了。
    二:所謂的"虽然输入的值也是数据库中有的值 但是保存的时候 获取到的却是name值 不是id值"。  這個輸入的值,你是怎麼知道在數據庫中有?別說是以那個name到數據庫查的。  就是,輸入的值,跟你的數據ID是怎麼關聯的。