[英]Populating combobox from another combobox
我通过编写代码从另一个组合框填充组合框
<i> public void fillCombo(ComboBox cb, string query, string displayMember, string valueMember) {
cmd=new SqlCommand(query,c.con);
SqlDataAdapter sda=new SqlDataAdapter(cmd);
sda.Fill(d.dt3);
cb.DataSource = d.dt3;
cb.DisplayMember = displayMember;
cb.ValueMember = valueMember;
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
int val;
Int32.TryParse(comboBox2.SelectedValue.ToString(), out val);
string q = "Select * From Tehsil where DistrictID =" + val;
fillCombo(comboBox1, q, "Tehsil_name", "TehsilID");
} </i>
组合框正在填充但不过滤数据。 它重复组合框项目。 如何过滤数据?
public void fillCombo(ComboBox cb, string query, string displayMember, string valueMember) {
cmd=new SqlCommand(query,c.con);
SqlDataAdapter sda=new SqlDataAdapter(cmd);
d.dt3.Clear();
sda.Fill(d.dt3);
cb.DataSource = d.dt3;
cb.DisplayMember = displayMember;
cb.ValueMember = valueMember;
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
int val;
Int32.TryParse(comboBox2.SelectedValue.ToString(), out val);
string q = "Select * From Tehsil where DistrictID =" + val;
fillCombo(comboBox1, q, "Tehsil_name", "TehsilID");
}
我想d是DataSet,而dt3是DataTable 。 我认为您需要在调用sda.Fill(d.dt3)之前清除DataTable的(dt3)数据。
d.dt3.Rows.Clear();
sda.Fill(d.dt3);
您是否尝试过创建View并分配RowFilter(我假设数据集和表格可能在其他控件之间共享以进行绑定)。
这是我修改功能的方法
public void fillCombo(ComboBox cb, string query, string displayMember, string valueMember, int districtID) {
cmd=new SqlCommand(query,c.con);
SqlDataAdapter sda=new SqlDataAdapter(cmd);
sda.Fill(d.dt3);
var comboView = d.dt3; //Assuming d.dt3 is a DataTable, if it is dataset you will need d.dt3.Tables["table_name"] or [index]
comboView.DefaultView.RowFilter = string.Format("{0}={1}", "DistrictID", districtID); //This should filter the view being bound to CB.
cb.DataSource = comboView;
cb.DisplayMember = displayMember;
cb.ValueMember = valueMember;
cb.DataBind(); //Explicit Call to Databind
}
// you will be calling it as below
fillCombo(comboBox1, q, "Tehsil_name", "TehsilID", val); //val is district ID as assigned in your comboBox2_SelectedIndexChanged event handler.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.