无法绑定多部分标识符“System.Data.DataRowView”

我有一个表填充Combobox1和Combobox1应该填充Combobox2,这就是问题所在。 这是我得到的例外

无法绑定多部分标识符“System.Data.DataRowView”。

代码:

private void frm2_Load(object sender, EventArgs e) { //Populate Combobox1 SqlDataAdapter da = new SqlDataAdapter("SELECT CategoryID, Name FROM Categories", clsMain.con); DataSet ds = new DataSet(); da.Fill(ds); comboBox1.DataSource = ds.Tables[0]; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "CategoryID"; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //populate Combobox2 SqlDataAdapter da = new SqlDataAdapter("SELECT SubCategoryID, Name FROM SubCategories WHERE CategoryID=" + comboBox1.SelectedValue, clsMain.con); DataSet ds = new DataSet(); da.Fill(ds); comboBox2.DataSource = ds.Tables[0]; comboBox2.DisplayMember = "Name"; comboBox2.ValueMember = "SubCategoryID"; } 

这是由于在第一个组合中填充数据时加载第二个combobox。
您可以通过以下方式避免此错误
1.使用SelectionChangeCommitted事件而不是SelectedIndexChanged事件。
要么
2.分离选定的索引更改事件,填充combobox,再次附加事件:

 private void frm2_Load(object sender, EventArgs e) { //Detach event comboBox1.SelectedIndexChanged -= comboBox1_SelectedIndexChanged; //Populate Combobox1 SqlDataAdapter da = new SqlDataAdapter("SELECT CategoryID, Name FROM Categories", clsMain.con); DataSet ds = new DataSet(); da.Fill(ds); comboBox1.DataSource = ds.Tables[0]; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "CategoryID"; //Attach event again comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged; } 

希望这会对你有所帮助。