繁体   English   中英

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

[英]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");
} 

我想dDataSet,dt3DataTable 我认为您需要在调用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM