小结:无法绑定由多个部分组成的标…

来源:互联网 发布:iphone 导出照片 mac 编辑:程序博客网 时间:2024/05/18 01:40
这个问题蛮搞的,通过断点可以知道是valueMember初始化的问题,但是如何解决却绕了点圈子,在定义的sql语句后想通过之前定义的cboBox1.ValueMember,通过获得他的值(非dispvalue或者Text的内容)来进行查询另外一张表中的关联字段,但问题就来了,或提示:
小结:无法绑定由多个部分组成的标识符鈥淪ystem.Data.DataRowView鈥
一开始是从System.Data.DataRowView着手,但千篇一律,没什么帮助,后来从断点触发,发现是初始化的问题,就想既然能获得期望结果,那么代码是没问题的,应该是逻辑上的问题,增加if判断后还是如此,网上找了找初始化的问题集合,还真有,原来问题就出现在数据绑定到控件的顺序上,如下:
DataSet ds = new DataSet();
sda.Fill(ds);
cboGrade.DataSource=ds.Tables[0];//如果在给下面2个属性进行赋值前就绑定了数据,那么系统会自动给下面2个属性初始化(初始化的值非空非null,而是"System.Data.DataRowView",问题就出现在这里)
cboGrade.DisplayMember = "GradeName";
cboGrade.ValueMember = "GradeId";
cboGrade.SelectedIndex =-1; 当修改成下面的结构时,问题解决:DataSet ds = new DataSet();
sda.Fill(ds);

cboGrade.DisplayMember = "GradeName";
cboGrade.ValueMember = "GradeId";
cboGrade.DataSource =ds.Tables[0]; 
cboGrade.SelectedIndex =-1;
总结下:
当使用SelectedIndexChanged时,ValueMember在DataSource前进行赋值,当使用SelectedValueChanged时,ValueMember在DataSource后进行赋值,主要还是触发事件决定的;


感觉【乘风直上】的分享:
参考于:http://shuikanshui.blog.163.com/blog/static/1482364201161114424696/

乘风直上

原创粉丝点击