我通过编写代码来填充另一个组合框中的组合框
<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>
组合框填充但不过滤数据。它正在重复组合框项目。如何过滤数据?
答案 0 :(得分:0)
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");
}
答案 1 :(得分:0)
我认为 d 是 DataSet 而 dt3 是 DataTable 。我认为你需要在调用sda.Fill(d.dt3)之前清除DataTable的(dt3)数据。
d.dt3.Rows.Clear();
sda.Fill(d.dt3);
答案 2 :(得分:0)
您是否尝试过创建视图并分配RowFilter(我假设数据集&amp;表可以在其他控件之间共享以进行绑定)。
以下是我修改功能的方法
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.