Mengapa System.Data.DataRowView Daripada Nilai Sebenar dalam WinForms Listbox?
Dalam pembangunan WinForms, menemui System.Data.DataRowView dan bukannya nilai sebenar dalam kotak senarai boleh membingungkan. Memahami isu asas akan memberi anda kuasa untuk menyelesaikan masalah ini dengan cekap.
Dalam coretan kod yang disediakan:
<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>
Kod kelihatan betul, kerana DataTable diisi melalui MySqlDataAdapter dan kemudian diberikan sebagai sumber data untuk kawalan ListBox. Walau bagaimanapun, sifat DisplayMember ditetapkan kepada "NameAndScore", yang merupakan alias lajur.
Apabila mengikat data pada kotak senarai, sifat DisplayMember menentukan lajur yang menyediakan teks yang dipaparkan dalam senarai. Dengan menetapkannya kepada alias "NameAndScore", anda mengarahkan kotak senarai untuk memaparkan rentetan System.Data.DataRowView dan bukannya data sebenar, kerana struktur data asas ialah perwakilan DataRowView bagi jadual.
Penyelesaian:
Untuk membetulkan isu ini dan memaparkan nilai sebenar daripada pangkalan data:
<code class="csharp">lstNames.DisplayMember = "Score";</code>
<code class="csharp">DataRowView drv = (DataRowView)lstNames.SelectedItem; String valueOfItem = drv["NameAndScore"].ToString();</code>
Pendekatan ini membolehkan anda mengakses nilai individu yang dikaitkan dengan item yang dipilih, membolehkan anda bekerja dengan asas data mengikut keperluan.
Atas ialah kandungan terperinci Mengapa Kotak Senarai WinForms Saya Memaparkan \'System.Data.DataRowView\' Daripada Nilai Sebenar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!