2016-12-27 3 views
0

Я Populating выпадающего из другого выпадающего списка, написав кодНаполнение выпадающего из другого выпадающего списка

<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

Вы пробовали создать вид и назначение 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. 
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"); 
} 
0

Я полагаю, что д является DataSet и dt3 является DataTable. Я думаю, что вам нужно очистить данные DataTable (dt3), прежде чем вы вызовете sda.Fill (d.dt3).

d.dt3.Rows.Clear(); 
sda.Fill(d.dt3); 
Смежные вопросы