因为项目需求使用CombiBox的SelectedValue取绑定的实际值,但总是报错
我的代码List<student> list1 = new studentbll().GetAllstudent();cboname.DisplayMember = "stuName";cboname.ValueMember = "stuId"; cboname.DataSource = list1;stuId = Convert.ToInt32(cboname.SelectedValue.ToString());//调用代码调用的时候报类似下面的错误
System.InvalidCastException:“无法将类型为“Student.Model.student”的对象强制转换为类型“System.IConvertible”。”通过调试发现,取出的值为并非我想得到的 int 类型的 stuId,而是一个 object 类型的student
后台sql server数据库代码create table student( stuId int identity(10000,1) primary key, stuName varchar(50) not null, gender varchar(2) not null check(gender='男' or gender='女'), classId int references Class(classId), phone varchar(20))![调试结果](https://img-blog.csdnimg.cn/20190505124721345.png)在绑定列和获取列名字大小写都正常的情况下,出现这样的错误,我觉得可能和返回list中过多字段有关,便又新建一个list 只放stuId、stuName用于DisplayMember显示值、ValueMember实际值 。使用这个新建的list来绑定数据,运行成功,不再报错。
修改如下 List<student> list1 = new studentbll().GetAllstudent(); List<student> List1 = new List<student>(); foreach (var a in list1) { student stu = new student(); stu.stuId = a.stuId; stu.stuName = a.stuName; List1.Add(stu); //重新定义List } cboname.DisplayMember = "stuName"; cboname.ValueMember = "stuId"; cboname.DataSource = List1;本人新手,有错还望指点。