//ComboBox数据绑定
DataSet ds =通过SQL获取的DataSet ;
DataRow dr = ds.Tables[0].NewRow();
dr["colName"] = "--全部--";
dr["colValue"] = "-1";
ds.Tables[0].Rows.Add(dr);
DataView dv = new DataView(ds.Tables[0]);
dv.Sort = sValueMember;
ComboBox1.DataSource = dv;
ComboBox1.DisplayMember = "colName";
ComboBox1.ValueMember = "colValue";//取值
string strTest1 = ComboBox1.SelectedItem.ToString().Trim();
string strTest = ComboBox1.SelectedValue.ToString().Trim();
请问,为什么取得的值是:System.Data.DataRowView !
该如何取到正确的绑定的值呢,谢谢。

解决方案 »

  1.   

    string strTest = ComboBox1.Text.ToString()
      

  2.   

    我期望取得绑定的值(value)
    ComboBox1.SelectedValue.......
      

  3.   

    value不是取到了么?就是ComboBox1.SelectedValue.ToString().Trim();如果你想取得Text 就用ComboBox1.Text
      

  4.   

    用ComboBox1.SelectedValue.ToString().Trim(); 取得的结果是:System.Data.DataRowView ! 
      

  5.   

    string strT = ComboBox1.SelectedItem..value.ToString().Trim();
      

  6.   

    string strT = ComboBox1.SelectedItem.value.ToString().Trim(); //value != SelectedValue
      

  7.   

    你在什么地方取值??
    SelectedIndexChanged??
    设置DataSource 的时候也会触发这个事件
    所以你要不写成如下ComboBox1.DisplayMember = "colName";
    ComboBox1.ValueMember = "colValue";
    ComboBox1.DataSource = dv;即先设置DisplayMember 以及ValueMember 属性要不然就换个事件,比如SelectionChangeCommitted
      

  8.   

    然后再用ComboBox1.SelectedValue.ToString().Trim(); 
      

  9.   

    或者你也可以不改变绑定时的代码顺序,在在SelectedIndexChanged里面改成如下
    DataRowView drv = ComboBox1.SelectedItem as DataRowView;
    string strTest1 = drv.Row["colName"].ToString();
    string strTest = drv.Row["colValue"].ToString();
      

  10.   

    lz的问题我怎么试都没出,一模一样的代码,lz你可真够无敌的!            DataTable dTable = new DataTable();
                dTable .Columns .Add ();
                dTable .Columns .Add ();            dTable.Columns[0].ColumnName ="1";
                dTable .Columns [1].ColumnName ="2";            DataRow dr = dTable.NewRow();
                dTable.Rows.Add(dr);            foreach (DataRow dd in dTable.Rows) 
                {
                    dd["1"] = "01";
                    dd["2"] = "02";
                }            this.comboBox1.DataSource = dTable;
                this.comboBox1.DisplayMember = "1";
                this.comboBox1.ValueMember = "2";
      

  11.   

    你colName和colValue这两个字段是表ds.table[0]中存在吗?
      

  12.   


    今天我也碰到了这个问题,结果是这样解决的: 
    一开始我是通过一个通用数据类中的一个方法返回一个datatable   dt的,然后就 
    combobox1.datasouce   =   dt; 
    combobox1.displaymember   =   "columnA "; 
    combebox1.valuemember   =   "comlumnB "; 
    数据是显示得出来,可是在combobox1_SelectedIndexChanged的事件里,取combobox1.SelectedValue就会返回System.Data.DataRowView,而不是columnB的值 http://topic.csdn.net/u/20070430/15/890d7840-30db-4073-bbf7-fbedf9a62ed5.html?seed=1915811446&r=55790359#r_55790359