首页 > 编程知识 正文

C# ComboBox控件 使用 SelectedValue取值时报错

时间:2023-05-05 15:57:03 阅读:244932 作者:3311

因为项目需求使用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;

本人新手,有错还望指点。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。