Warum System.Data.DataRowView statt realer Werte in der WinForms-Listbox?
Bei der WinForms-Entwicklung stoßen wir auf System.Data.DataRowView statt Tatsächliche Werte in einer Listbox können rätselhaft sein. Wenn Sie das zugrunde liegende Problem verstehen, können Sie dieses Problem effizient lösen.
Im bereitgestellten Codeausschnitt:
<code class="csharp">MySqlDataAdapter dAdapter = new MySqlDataAdapter(sqlStr, myConn); DataTable dTable = new DataTable(); dAdapter.Fill(dTable); dAdapter.Dispose(); lstNames.DisplayMember = "NameAndScore"; lstNames.DataSource = dTable;</code>
Der Code erscheint korrekt, da die DataTable über einen MySqlDataAdapter gefüllt und dann zugewiesen wird als Datenquelle für das ListBox-Steuerelement. Die DisplayMember-Eigenschaft ist jedoch auf „NameAndScore“ gesetzt, was ein Spaltenalias ist.
Beim Binden von Daten an eine Listbox gibt die DisplayMember-Eigenschaft die Spalte an, die den in der Liste angezeigten Text bereitstellt. Indem Sie es auf den Alias „NameAndScore“ festlegen, weisen Sie das Listenfeld an, die Zeichenfolge System.Data.DataRowView anstelle der tatsächlichen Daten anzuzeigen, da die zugrunde liegende Datenstruktur eine DataRowView-Darstellung der Tabelle ist.
Lösung:
Um dieses Problem zu beheben und die tatsächlichen Werte aus der Datenbank anzuzeigen:
<code class="csharp">lstNames.DisplayMember = "Score";</code>
<code class="csharp">DataRowView drv = (DataRowView)lstNames.SelectedItem; String valueOfItem = drv["NameAndScore"].ToString();</code>
Mit diesem Ansatz können Sie auf einzelne Werte zugreifen, die mit dem ausgewählten Element verknüpft sind, und so mit dem zugrunde liegenden Element arbeiten Daten nach Bedarf.
Das obige ist der detaillierte Inhalt vonWarum zeigt mein WinForms-Listbox „System.Data.DataRowView' anstelle der tatsächlichen Werte an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!