C# 中Combox控件中的每个项目都有两个属性一个是value,一个是text,text用于显示用的,这个value有什么用啊?而且每个项目都有一个index,这个Index的的值和value是一样的吗?现在我在数据库中查询的东西,想让combox 控件显示, 查询出的表包含两列,一列是要显示的文本,另一列想让他作为Index值,如何实现呢???????

解决方案 »

  1.   

    1、text是你看到的,value是背后隐藏的
    2、index和value不一样,index是索引,从0开始,按照顺序+1;value是绑定时自己设定的绑定的列的值
    3、  this.comboBox1.DataSource = DataTable;//数据源
      this.comboBox1.DisplayMember = "xxx";//显示的值,就是text
      this.comboBox1.ValueMember = "yyy";//实际的值,就是value
      

  2.   

    Combox的Text一般作为显示的值,而value就是真正的值。比如你的一个下拉列表显示“是”和“否”,这是text
    而对应的是“0”和“1”,这是valueindex是说SelectedIndex吧?这是指被选中项的索引。绑定数据库的查询结果看看:http://blog.csdn.net/xianshengsun/article/details/6205302
      

  3.   

    如果index和文本是一一对应关系,可以用字典Dictionary<int,string> dic = new Dictionary<int,string>();
    dic.Add(1,"a");
    dic.Add(2,"b");
    foreach(var keyValue in dic)
    {
    this.combox.items.add(dic)
    }// 需要使用时
    int index = ((Dictionary<int,string>)this.combox.SelectedItem).Key;
    string text = ((Dictionary<int,string>)this.combox.SelectedItem).Value;
      

  4.   

    楼上都是正解,只是在使用的时候注意你要用的是哪一个
    比如一张员工信息表和部门表,员工信息表有个字段叫做部门编号,类型是int
    当我要在界面上的combox显示所有部门的时候,我要绑定两个值,text是用作显示的一个个部门
    value值的作用:当我要写入一个新员工的信息的时候,插入到员工表里面的部门编号这一列,我就要获是       value的值
    补充一点,text绑定的是部门表的部门名称这一列,value绑定的是部门编号这一列,员工表的部门编号引用部门表的部门编号列。
      

  5.   

    您说的这个是要绑定吗?可以直接复制吗?
    表:类似这样:2    中国5    美国6    法国
    .     .
    .     .
    .     .现在combo中显示国家名,更加用户选中的国家名,得到对应的主键,更加这个主键值,要到另一个表中查询数据,这个应该怎么实现呢?给combo中的项目添加 text和vaule值?Index为主键值??
      

  6.   

    combobox1.Items.add(""), 这个只是text给了值,value的值怎么付呢?
      

  7.   


    this.comboBox1.DataSource = DataTable;//数据源
      this.comboBox1.DisplayMember = "xxx";//显示的值,就是text这种操作必须先绑定数据源吗?
    我这段代码,执行后combo中没有东西?
    SqlDataReader red = cmd.ExecuteReader();
                    while (red.Read())
                    {
                          
                       //comboBox1.Items.Add(red[0].ToString(),red[1].ToString());
                        comboBox1.DisplayMember = red[1].ToString();
                        comboBox1.ValueMember = red[0].ToString();                }
                    red.Close();
      

  8.   

    combobox1.Items.add 的参数可以是对象,可以传一个KeyValuePair对象进去,我在4楼代码写错了。
    应该是this.combox.items.add(keyValue)
      

  9.   

    我看有这么绑定的:与数据库表绑定           DataTable dt = by.GetYear();           combobox.DataSource = dt;
               combobox.DisplayMember = "字段";--这是text值
               combobox.ValueMember = "字段";--这是value值
      

  10.   


                    DataTable dt = new DataTable();
                    dt.Columns.Add("Id", typeof(int));
                    dt.Columns.Add("Name", typeof(string));
    //然后把你想要加的数据加进DataTable 里
                      dt.Rows.Add(new object[] { "这里对应的是Id(int类型的)", "这里对应Name"});//最后绑定
                      comboBox1.DisplayMember = "Name";
                    comboBox1.ValueMember = "Id";
                    comboBox1.DataSource = dt;
      

  11.   

    之后
    comboBox1.SelectedValue
    就可以获得隐藏的的值了、
    根据这个值去做其他的操作
      

  12.   

    [Quote=引用 7 楼  的回复:]
    combobox1.Items.add(""), 这个只是text给了值,value的值怎么付呢?combobox1.Items.add("","") 就OK了!
      

  13.   

    别误导人家、
    你自己看看代码对了?
    combobox1.Items.add("","")
    不报错我头砍下来
      

  14.   

    怎么可能会没用呢,之后你慢慢的就会体会到这些当时你感觉多余的设计有多方面了。
    另外让微软自带的common显示两列不行,你可以要显示的text拼接好了再绑定
    例如你要显示 0001:名字 ,那么可以把数据源对应的数据先处理好再绑定
      

  15.   

    Index不是主键值,Index是Combox项的一个属性,直译过来是索引,索引都是从【0】开始的
    要动态绑定Combox的数据,就要先查数据库,返回一个DataTable然后就写
    Combox.DataSource = dt;
    Combox.DisplayMember = dt.Rows[0]["Country"].ToString();
    Combox.ValueMember = dt.Rows[0]["Id"].ToString();
      

  16.   

    楼上说的都很清楚了哈。呵呵。
    当你txt和value一样的时候,你感受不到啥。如果你的txt和value不一样的时候;咋整?
    比如数据库里面有  ID  IDTXT两列
    你显示的时候,希望是IDTXT,但是内部做关联的时候,需要用到ID,这个时候value作用就来了。
      

  17.   

    value可以根据需要绑定相关的信息,也可以设置成和text一样。index是int类型的,和Combox中的项相关,从0开始依次增1,index的值是相对固定的,不能和其他数据绑定
      

  18.   


    很懒,不想试,我没这么写过,所以不懂,这样写可以么?value和text指定的是列名把,你把第一列的数据给他们,这样运行对么?row[0]应该是第一行的数据吧?不是列名吧?
      

  19.   

    DataTable dt = by.GetYear();  combobox.DataSource = dt;
      combobox.DisplayMember = "字段";--这是text值
      combobox.ValueMember = "字段";--这是value值
      

  20.   

    text是文本的显示,value是属性值
    index和value来说的话不一样,index是索引值,从0开始,顺序依次+1
    value是绑定时设定绑定的列的值
    this.comboBox1.DataSource = DataTable;//数据源
    this.comboBox1.DisplayMember = "vera";//显示的值,就是text
    this.comboBox1.ValueMember = "era1";//实际的值,就是value在与数据库绑定时:
    DataTable dt = by.GetYear();combobox.DataSource = dt;
    combobox.DisplayMember = "字段";--text
    combobox.ValueMember = "字段";--value
      

  21.   

    在 form_load()中做绑定:string Sqlstr1 = "select SaTrTypeID,explain from SmsSaType";
    SqlDataAdapter adapter = new SqlDataAdapter(Sqlstr1, clsMain.Gcon);DataSet data = new DataSet();
    comboBox1.Items.Clear();
    // 填充数据到DataSet
    adapter.Fill(data);
    comboBox1.DataSource = data.Tables[0]; 
              
    comboBox1.DisplayMember = "explain";
    comboBox1.ValueMember = "SaTrTypeID";   ///////  给combobox绑定数据源
    comboBox1.SelectedIndex = 0;
    在comboBox1_SelectedIndexChanged(object sender, EventArgs e) 中想获得用户选中的文本 comboBox1.Text.Trim() 但是取得的值总是:"System.Data.DataRowView"
    断点调试发现 在 load_form 时 不执行绑定操作,直接跳到comboBox1_SelectedIndexChanged 函数中。如何comboBox1_SelectedIndexChanged 没有  comboBox1.Text.Trim()操作,则绑定操作可以进行。
      

  22.   

    都是执行到 load 函数中
    comboBox1.DataSource = data.Tables[0];就跳到Indexchanged 中是不是绑定操作执行后,就马上触发了 Indexchanged 操作呢?
      

  23.   

    this.comboBox1.DataSource = DataTable;//数据源
     this.comboBox1.DisplayMember = "vera";//显示的值,就是text
     this.comboBox1.Val……
    当我选择a下拉框第一项时  用上班代码给b下拉框绑定数据源,b就有值了;当选择a的第二个选项时,查询出来是空记录,b的下拉框就应该没值了,我怎么把那个绑定数据源清空 
      

  24.   

     自己回答吧,new一个空的数据源,给它绑定,就清空了