WinForms リストボックスで実際の値の代わりに System.Data.DataRowView が使用される理由
WinForms 開発で、代わりに System.Data.DataRowView が使用されるリストボックス内の実際の値はわかりにくい場合があります。根本的な問題を理解すると、この問題を効率的に解決できるようになります。
提供されたコード スニペット内:
<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>
DataTable が MySqlDataAdapter を介して入力され、割り当てられるため、コードは正しく表示されます。 ListBox コントロールのデータ ソースとして。ただし、DisplayMember プロパティは列のエイリアスである "NameAndScore" に設定されます。
データをリストボックスにバインドするとき、DisplayMember プロパティはリストに表示されるテキストを提供する列を指定します。これをエイリアス「NameAndScore」に設定すると、基になるデータ構造がテーブルの DataRowView 表現であるため、実際のデータの代わりに文字列 System.Data.DataRowView を表示するようにリストボックスに指示します。
解決策:
この問題を修正し、データベースからの実際の値を表示するには:
<code class="csharp">lstNames.DisplayMember = "Score";</code>
<code class="csharp">DataRowView drv = (DataRowView)lstNames.SelectedItem; String valueOfItem = drv["NameAndScore"].ToString();</code>
このアプローチにより、選択した項目に関連付けられた個々の値にアクセスでき、基になる項目を操作できるようになります。必要に応じてデータを入力します。
以上がWinForms リストボックスに実際の値ではなく「System.Data.DataRowView」が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。