当我给Combox 和 ListBox 绑定过数据之后 。在获取数据的时候总是得到 System.Data.DataRowView 这个值 为什么呀 ; 绑定代码是
string SQL = "select * from UserInfo";
DataSet ds=DB.GetDataSet (SQL);
ListBox.DataSource = ds.Tables [0];
ListBox.DisplayMember = "UserID";
ListBox.ValueMember = "UserID";
我用的是SQL 2005 win7和s2010
使用 ListBox.Items [0].ToString ()得到是 System.Data.DataRowView 但是使用System.SelectValue可以得到值
首先你得知道ToString()方法的含义。如果类型没有专门地覆盖ToString()方法,那么默认返回的是类型的全名称。而DataRowView没有覆盖这个方法。
那么DataRowView又是什么呢?查一下MSDN就可以知道,它是DataRow的视图,DataRow是DataTable的一行,而DataTable就是你绑定到ListBox上的类型。这下就明白了吧?
绑定之后,ListBox上的每个Item都是一个DataRowView实例,因此你调用ListBox.Items[0].ToString()得到的就是System.Data.DataRowView。要想得到你想要的,必须使用SelectedValue属性,不能滥用ToString()方法。
DataRowView row = ListBox.Items [0] as DataRowView;
int userID = Convert.ToInt32(row.Row("UserID"));