当前位置:编程学习 > C#/ASP.NET >>

请问我的ComboBox控件怎么老是返回System.Data.DataRowView

我在窗体的Load时间里用DataSource将ComBoBox控件的数据源设置为Dataset,然后设置其Displaymember属性为指定的字段都没有问题,可是在ComboBox控件的comboBox1_SelectedIndexChanged时间里,它的SelectedItem属性始终返回System.Data.DataRowView,不知道怎么回事,请高手指教,谢谢!

--------------------编程问答-------------------- 设置好DisplayValue, ValueMember
SelectedItem中就是System.Data.DataRowView对象
要取ValueMember对应的值,应该用SelectedValue --------------------编程问答-------------------- 兄弟,我按你的方法试了,还是老样子呀!我是这样写的,但是messagebox.show出来的值依然是System.Data.DataRowView。ComboxBox控件的DisplayValue, ValueMember我是在窗体的Load事件里设置的,下面的代码是在ComboBox控件的comboBox1_SelectedIndexChanged事件里写的!

 conn = mycon.Connection();
  SqlParameter para = new SqlParameter("@comOrderID", SqlDbType.Int);
  MessageBox.Show(comboBox1.SelectedValue.ToString().Trim(), "D");
  mycon.orderID = Convert.ToInt32(comboBox1.SelectedValue.ToString().Trim());
  para.Value = mycon.orderID;
  mycon.command().Parameters.Add(para);
  SqlDataAdapter detailda = new SqlDataAdapter();
  mycon.Command= "Select OrderID,ProductID,UnitPrice,Quantity,Discount from [order details] where OrderID=@comOrderID";
   detailda.SelectCommand = mycon.command();
       detailda.Fill(ds, "detail");
         dataGridView1.DataSource = ds.Tables["detail"];
                mycon.close(); --------------------编程问答-------------------- 参考下面代码,

ComboBox1.DataSource = myDataSet ;//数据集
ComboBox1.DisplayMember = "person.userId" ;//表名加字段名
ComboBox1.ValueMember = "person.username" ;

this.ComboBox1.DataSource = myDataTable;//数据表
this.ComboBox1.DisplayMember = "Name";//字段名
this.ComboBox1.ValueMember = "userId";//字段名


获取当前位置的数据
DataRowView rowView = (DataRowView)ComboBox1.SelectedItem; --------------------编程问答-------------------- 谢谢楼上,我再试试
--------------------编程问答-------------------- 没有指明ComboBox绑定的字段名称(DisplayMember) --------------------编程问答-------------------- 今天我也碰到了这个问题,结果是这样解决的:
一开始我是通过一个通用数据类中的一个方法返回一个datatable dt的,然后就
combobox1.datasouce = dt;
combobox1.displaymember = "columnA";
combebox1.valuemember = "comlumnB";
数据是显示得出来,可是在combobox1_SelectedIndexChanged的事件里,取combobox1.SelectedValue就会返回System.Data.DataRowView,而不是columnB的值

后来我把调用数据的过程移出来,变成
OleDbDataAdapter cmd = new OleDbDataAdapter("select * from TableA", conn);
DataTable dt = new DataTable();
cmd.Fill(dt);
combobox1.DataSource = dt;
combobox1.DisplayMember = "columnA";
combobox1.ValueMember = "columnB";
就可以通过combobox1.SelectedValue返回columnB的值

这里面究竟是什么原因,我也搞不清楚,还请哪位大侠给解释解释 --------------------编程问答-------------------- 回头给你看看。 --------------------编程问答--------------------
引用 6 楼 stzgq 的回复:
今天我也碰到了这个问题,结果是这样解决的:
一开始我是通过一个通用数据类中的一个方法返回一个datatable   dt的,然后就
combobox1.datasouce   =   dt;
combobox1.displaymember   =    "columnA ";
combebox1.valuemember   =    "comlumnB ";
数据是显示得出来,可是在c……

我的也是这种情况,望高手给解释一下! --------------------编程问答--------------------
我遇到同样的问题:

comb.Text 
返回值总是::System.Data.DataRowView

引用楼主  的回复:
我在窗体的Load时间里用DataSource将ComBoBox控件的数据源设置为Dataset,然后设置其Displaymember属性为指定的字段都没有问题,可是在ComboBox控件的comboBox1_SelectedIndexChanged时间里,它的SelectedItem属性始终返回System.Data.DataRowView,不知道怎么回事,请高手指教,谢谢!
--------------------编程问答-------------------- http://blog.csdn.net/xianfajushi/article/details/7017289 --------------------编程问答-------------------- 这跟你绑定的数据有关 要设置编码及对应的值
//绑定
CBox_Date.DataSource = dtResult;
                CBox_Date.DisplayMember = "sperioddesc";
                CBox_Date.ValueMember = "speriodcode";
//读取
string CBox_Date = this.CBox_Date.SelectedValue.ToString();
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,