VS2008 C# winform程序 
先说一下大概的应用,在一个用户资料管理界面上,要编辑现有客户的资料,就是从数据库中取出客户的各项资料填到页面的各个控件里去,其中有个控件是个Combobox,该控件已与某个tables绑定了,分别设定了DisplayMember和ValueMember,从数据库中取出的值与ValueMember是一致的,我的要求很简单,根据从数据库里读出的值来确定Combobox该显示哪一项。
但请注意,Combobox已设置了ValueMember,要比较的是ValueMember和数据库的值,不是DisplayMember的值。
实际上我就是想遍历Combobox的ValueMember。

解决方案 »

  1.   

    Combobox.Text="";
    for(int   i=0;i <comboBox1.Items.Count;i++) 
    {     
    }
      

  2.   

    //赋值
    comboBox1.SelectedValue = "value";
                //遍历
                foreach (object o in comboBox1.Items)
                {
                    DataRowView r = o as DataRowView;
                    if(r!=null)
                        MessageBox.Show(r["valuename"].ToString());
                }
      

  3.   

    for(int i=0;i <comboBox1.Items.Count;i++)  

       xxxx.ValueMember=....
    }
      

  4.   

    1楼的大哥,我是问如何得到每一项的值域,不是问如何写循环,我的循环已写好了,for(int i=0;i <comboBox1.Items.Count;i++)  

       if(数据库的值 == comboBox1.第i项的值)
       {
         …………
        }
    }
    问题是 如何得到ComboBox1.第i项的值(不是文本),谢谢。
      

  5.   

    this.comboboxx1.SelectedIndex = i;
    数据库的值==combobox1.text
      

  6.   


     public void SelectValue(ComboBox box1, string value)
            {
                for (int i = 0; i < comboBox2.Items.Count; i++)
                {
                    DataRowView r = comboBox2.Items[i] as DataRowView;
                    //c_number 为box1 的ValueMember
                    if (r.Row["c_number"].ToString() == value)
                    {
                        box1.SelectedIndex = i;
                        return;
                    }
                }
            }
      

  7.   

    楼上的大哥的办法我也用过,是可行的,不过觉得这个方法有些怪怪的,这个循环要让combobox把每一项都选中一次,感觉是个笨办法。
    combobox控件有个方法叫GetItemText ,可以获取DisplayMember的值,不过我就没有找到什么方法可以获取ValueMember的值。另外3楼的兄弟的第一段代码也可以实现,这个不是用循环的,而是直接定义选中项的值为数据库里的,但是还有点不足,就是如果数据库里的值在combobox中不存在,则combobox显示空,我希望这时给出提示,当然了,这时在判断一下combobox的text是否为空,如果为空给出提示,也是可以凑合实现的,不过我始终认为循环是最完美的解决方法,不过就是不知道怎么获取每一项里的值。