Wie kann man die Dropdown-Liste Combobox dazu bringen, ihre Liste entsprechend einer anderen Combobox zu ändern?


Javed Rehman

Ich arbeite derzeit an einem kleinen Projekt für eine Geschäftsgesellschaft in Visual Studio 2015 und SQL Server. Ich habe zwei Comboboxen "AccountCode" und "AccountNo". Ich möchte das Kombinationsfeld "AccountNo" aktivieren, um seinen Wert entsprechend der Auswahl eines Textes aus der Dropdown-Liste "AccountCode" zu ändern. Aber ich bekomme folgenden Fehler:

Eine Ausnahme vom Typ 'System.Data.SqlClient.SqlException' ist in System.Data.dll aufgetreten, wurde jedoch im Benutzercode nicht behandelt

Zusätzliche Informationen: Die mehrteilige Kennung "System.Data.DataRowView" konnte nicht gebunden werden.

private void cmBxAccountCode_DataEntry_SelectedIndexChanged(object sender, EventArgs e)
    {
        cmBxAccountNo_DataEntry.ResetText();
        cmBxAccountNo_DataEntry.Refresh();
        DataSet ds = new DataSet();
        da.SelectCommand = new SqlCommand("SELECT ID,ACCOUNTNO FROM  AccountHolder WHERE ACCOUNTCODE =" + cmBxAccountCode_DataEntry.Text, SQLConnection.con);
        da.Fill(ds);
        cmBxAccountNo_DataEntry.DataSource = ds.Tables[0];
        cmBxAccountNo_DataEntry.DisplayMember = "ACCOUNTNO";
        cmBxAccountNo_DataEntry.ValueMember = "ID";
    }
Sujith Karivelil

Ihre Anfrage sollte folgendermaßen aussehen:

SELECT ID,ACCOUNTNO FROM  AccountHolder WHERE ACCOUNTCODE ='" + cmBxAccountCode_DataEntry.Text  + "'"

Ich empfehle Ihnen jedoch dringend, parametrisierte Abfragen zu verwenden, um eine Injektion zu vermeiden . Nehmen Sie stattdessen auch den ausgewählten Wert für Text(dies entspricht jedoch dem Wert in der Datenbank). Die parametrisierte Abfrage sieht folgendermaßen aus:

// Code here
SqlCommand selectCommand=  new SqlCommand("SELECT ID,ACCOUNTNO FROM  AccountHolder WHERE ACCOUNTCODE =@accountCode", SQLConnection.con);
selectCommand.Parameters.Add("@accountCode", SqlDbType.VarChar).Value = cmBxAccountCode_DataEntry.Text;
// execute here

Verwandte Artikel