Combobox füllen aus der Datenbank
Ich habe einen Fehler mit einer combobox
Mein code:
SqlConnection conn = new SqlConnection();
try
{
conn = new SqlConnection(@"Data Source=SHARKAWY;Initial Catalog=Booking;Persist Security Info=True;User ID=sa;Password=123456");
string query = "select FleetName, FleetID from fleets";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.CommandText = query;
conn.Open();
SqlDataReader drd = cmd.ExecuteReader();
while (drd.Read())
{
cmbTripName.Items.Add(drd["FleetName"].ToString());
cmbTripName.ValueMember = drd["FleetID"].ToString();
cmbTripName.DisplayMember = drd["FleetName"].ToString();
}
}
catch
{
MessageBox.Show("Error ");
}
Die Daten in die combobox, aber wenn Sie ändern Sie die Auswahl, die displaymember valuemember nicht ändern.
Es funktioniert jetzt aber wenn ich auf die Schaltfläche um die Daten
private void button1_Click(object sender, EventArgs e)
{
label1.Text = cmbTripName.DisplayMember;
label2.Text = cmbTripName.ValueMember;
}
Diese wird angezeigt:
FleetName
FleetID
Er wird nicht angezeigt, der Wert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie komplett neu zu schreiben code. DisplayMember und ValueMember Punkt zu columnNames! Außerdem sollten Sie sich wirklich ein
using block
- also die Verbindung wird entsorgt (und geschlossen) nach der Ausführung der Abfrage.Statt mit einem dataReader auf die Werte zuzugreifen, wählte ich eine dataTable und gebunden wird es als dataSource auf die comboBox.
Mit einem dataTable kann ein etwas langsamer als ein dataReader aber ich nicht haben, um meine eigene Klasse. Wenn Sie wirklich müssen/wollen nutzen DataReader Sie können wählen, @Nattrass Ansatz. In jedem Fall sollten Sie schreiben Sie eine using-block!
BEARBEITEN
Wenn Sie wollen, um den aktuellen Wert der combobox versuchen, diese
Verwenden
Combobox
in der Weise, die Sie wollen, könnten Sie übergeben Sie ein Objekt dercmbTripName.Items.Add
Methode.Dass Objekt sollte
FleetID
undFleetName
Eigenschaften:Den
Fleet
Klasse:Oder, wahrscheinlich könnten Sie tun, Weg mit der Notwendigkeit für eine
Fleet
Klasse komplett durch die Verwendung eines anonymen Typs...Aus der Seite der Schleife, stellen folgenden.