我是一名IT人员,正在使用winform和combobox。
我按照以下顺序设置了combobox的属性:
combobox.DisplayMember
combobox.ValueMember
combobox.DataSource
绑定码是指:
private void BindBranch()
{
BranchClass branch = new BranchClass();
branch.Active = true;
branch.Company = Startup.CompID;
if (branch.GetAll(out dtBranch, out result))
{
cmbBranch.DisplayMember = "br_name";
cmbBranch.ValueMember = "br_id";
cmbBranch.DataSource = dtBranch;
}
else
{
MessageBox.Show(result);
}
}
我在我的应用程序中多次使用了combobox,但我不知道我犯了什么错误。有时,根据“ValueMember”属性的数据类型,SelectedItem属性返回确切的值(int,string),但有时它会返回“DataRowView”,在这种情况下,会抛出InvalidCastException异常。
我已经阅读过,这是由于combobox中属性设置的顺序引起的。但现在并非如此。
绑定代码如下:
![enter image description here](https://istack.dev59.com/PutJl.webp)
private void BindEmployee()
{
employee.Branch = Convert.ToInt32(cmbBranch.SelectedItem); // InvalidCastException thrown here
employee.Active = true;
var dt = new DataTable();
if (employee.GetEmployee(out dt, out result, false))
{
cmbEmployee.DisplayMember = "emp_name";
cmbEmployee.ValueMember = "emp_id";
cmbEmployee.DataSource = dt;
}
}