Heim  >  Artikel  >  Datenbank  >  Warum zeigt mein WinForms-Listbox „System.Data.DataRowView“ anstelle der tatsächlichen Werte an?

Warum zeigt mein WinForms-Listbox „System.Data.DataRowView“ anstelle der tatsächlichen Werte an?

Barbara Streisand
Barbara StreisandOriginal
2024-11-02 03:55:30788Durchsuche

Why Does My WinForms Listbox Display

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:

  • Setzen Sie DisplayMember auf den tatsächlichen Spaltennamen:
<code class="csharp">lstNames.DisplayMember = "Score";</code>
  • Rufen Sie die spezifischen Werte mithilfe der DataRowView-Darstellung ab:
<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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn