WinForms リストボックスに期待値ではなく「System.Data.DataRowView」が表示されるのはなぜですか?
Nov 02, 2024 pm 02:55 PMWinForms リストボックスの "System.Data.DataRowView" の謎を解明する
WinForms リストボックスで実際の値を期待しているときに "System.Data.DataRowView" に遭遇するのは、困惑する。以下に原因の詳細な調査を示します。
コードはデータベースと対話し、MySQL データ アダプターとアダプターを使用してデータを取得し、そのデータを DataTable に割り当てます。リストボックスの DisplayMember は「NameAndScore」に設定され、DataTable はリストボックスのデータ ソースとして機能します。
根本的な原因は、リストボックスに割り当てられているデータのタイプにあります。データをリストボックスにバインドするときは、通常、その DisplayMember として文字列またはオブジェクトのいずれかを指定します。次に、リストボックス内の各項目は、バインドされたデータからの DisplayMember の値を使用して作成されます。
コードでは、DisplayMember は "NameAndScore" であり、SQL クエリの計算列です。この列は、「名前」と「スコア」の 2 つの値を、間にスペースを入れて組み合わせます。 DataTable には DataRow オブジェクトが含まれており、各行はデータベースのレコードを表します。 Listbox が DataTable にバインドされると、各 DataRow オブジェクトの DisplayMember の値が表示されます。
各 DataRow はデータベースの行全体を表すため、DisplayMember の値は単なる文字列ではなく DataRowView です。物体。 DataRowView は DataRow オブジェクトのラッパーであり、その値、関係、その他のプロパティへのアクセスを提供します。
この問題を解決し、実際の "Name" と "Score" の値を表示するには:
- リストボックスに表示する値ごとに、SQL クエリに個別の列を追加します。例:
<code class="sql">SELECT Name, Score, CONCAT(Name, ' ', Score) as NameAndScore FROM highscore ORDER BY Score DESC</code>
- コードを変更して、Listbox の DisplayMember を「Name」などの適切な列名に設定します。
<code class="c#">lstNames.DisplayMember = "Name";</code>
以下の手順に従うことで、リストボックスにデータベースからの目的の値が表示されるようにすることができます。このような不一致を避けるために、リストボックスにバインドするときに関係するデータ型を理解することが重要であることに注意してください。
以上がWinForms リストボックスに期待値ではなく「System.Data.DataRowView」が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
