如何使用其他Combobox填充Combobox?

我在这里有点新鲜,我对我正在制作的节目有很多疑问,但最让我烦恼的是标题上的节目。

基本上,我有一个Combobox,我用这个填充:

DataSet ds = new DataSet(); MySqlDataAdapter da = new MySqlDataAdapter("SELECT cveestado, nomestado FROM tbEstado", conexion); da.Fill(ds, "FillDropDown"); cbEstado.DisplayMember = "Nomestado"; cbEstado.ValueMember = "CveEstado"; cbEstado.DataSource = ds.Tables["FillDropDown"]; conexion.Close(); 

根据用户选择的内容,我想根据第一个选择填充另一个combobox。

到目前为止,我有这个,但它不起作用:

 private void cbEstado_TextChanged(object sender, EventArgs e) { if (cbEstado.SelectedValue.ToString() == "Tabasco") { try { DataSet ds = new DataSet(); MySqlDataAdapter da = new MySqlDataAdapter("SELECT cvemunicipio, nommunicipio FROM tbMunicipio where cveestado = 27", conexion); da.Fill(ds, "FillDropDown"); cbMunicipio.DisplayMember = "Nommunicipio"; cbMunicipio.ValueMember = "Cvemunicipio"; cbMunicipio.DataSource = ds.Tables["FillDropDown"]; conexion.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } } 

基本上,如果用户选择“塔巴斯科”,我希望第二个combobox填充塔巴斯科市。

我的sql代码如下,以防万一:

 create table tbEstado (cveEstado int not null, nomEstado varchar(45) not null, constraint pkcveEstado primary key (cveEstado) )engine=innodb; create table tbMunicipio (cveMunicipio int not null, nomMunicipio varchar(45) not null, cveEstado int not null, constraint pkcveMunicipio primary key (cveMunicipio), constraint fkcveEstado foreign key (cveEstado) references tbEstado(cveEstado) )engine=innodb; 

谢谢!

编辑

得益于https://stackoverflow.com/users/1197518/steve ,答案是:

 private void cbEstado_TextChanged(object sender, EventArgs e) { if (cbEstado.SelectedValue != null && Convert.ToInt32(cbEstado.SelectedValue) == 27) { try { DataSet ds = new DataSet(); MySqlDataAdapter da = new MySqlDataAdapter("SELECT cvemunicipio, nommunicipio FROM tbMunicipio where cveestado = 27", conexion); da.Fill(ds, "FillDropDown"); cbMunicipio.DisplayMember = "Nommunicipio"; cbMunicipio.ValueMember = "Cvemunicipio"; cbMunicipio.DataSource = ds.Tables["FillDropDown"]; conexion.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } } 

您正在检查链接到CveEstado列的SelectedValue属性。

此列包含的数字不是字符串Tabasco

  if (cbEstado.SelectedValue != null && Convert.ToInt32(cbEstado.SelectedValue) == 27) { try { ....... 

这可能会解决您的实际问题,但请在您的问题评论中查看给您的建议

您可以使用dataview作为示例:

 cbEstado.Datasource =ds.Tables["State"]; cbMunicipio.Datasource = new Dataview(ds.Tables["Muncipalities"];); 

在cbSample1_SelectedIndexChange事件中你可以:

 (cbMunicipio.DataSource as DataView).RowFilter = "cveEstado='" + cbEstado.SelectedValue.ToString() + "'";