从另一个组合框中填充组合框

时间:2016-12-27 07:20:10

标签: c#

我通过编写代码来填充另一个组合框中的组合框

<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>

组合框填充但不过滤数据。它正在重复组合框项目。如何过滤数据?

3 个答案:

答案 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.