2016-07-09 7 views
0

Meine Combobox bestimmt, welche Elemente in der Listbox angezeigt werden. Das Listenfeld wird jedoch nicht aktualisiert, wenn der Index geändert wird.ListBox aktualisiert sich nicht bei der Indexänderung der Combobox

private void cmbProdType_SelectedIndexChanged(object sender, EventArgs e) 
{    
    String query = "Select * From Product Where ProductType = '"+cmbProdType.SelectedValue+"'";  
    Prods = db.GetDataTable(query); 
    dataGridView1.DataSource = Prods; 
    foreach (DataRow dr in Prods.Rows) 
    { 
     ProdName.Add(dr[1].ToString()); 
     PrevCount.Add(int.Parse(dr[2].ToString()));     
    } 
    listBox1.DataSource = ProdName; 
    listBox2.DataSource = PrevCount;  
}  

Das datagridview aktualisiert, so dass es die Abfrage ausschließt, die fehlerhaft ist.

+0

Ist dieses Fenster Formen nennen? oder ASP.NET? – user3185569

+0

Es ist Windows-Formulare – Cleaven

+0

Verwenden Sie zuerst parametrisierte Abfragen, um SQL-Injection-Angriffe zu verhindern. Dann ist es ausreichend, 'listBox1.DataSource = Prods;' zu setzen und dann 'listBox1.DisplayMember' auf einen Feldnamen des Produkttyps wie' 'Name'' zu setzen. Auch wenn Sie 'SelectedValue' von' listBox1' verwenden wollen, müssen Sie 'ValueMember' auf ein Feld von' ProductType' wie '" Id "' setzen. –

Antwort

0

Sie müssen auch DataTextField und DataValueField wie

listBox1.DataSource = ProdName; 
listBox1.DataTextField = "Value"; 
listBox1.DataValueField = "Key"; 

auch einstellen, wenn es ASP.NET ist, dann müssen Sie DataBind()

listBox1.DataBind();