如何基于其他组合框填充组合框
本文关键字:组合 填充 其他 何基于 | 更新日期: 2023-09-27 18:13:51
我是新来的,我对我正在制作的一个程序有很多问题,但最让我困扰的是标题上的问题。
基本上,我有一个组合框,我用这样填充:
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();
根据用户选择的内容,我想根据第一个选择填充另一个组合框。
到目前为止,我有这个,但它不工作:
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);
}
}
}
基本上,如果用户选择"Tabasco",我希望第二个组合框填入Tabasco市。
为了以防万一,我的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() + "'";