WinForms リストボックスに実際の値ではなく「System.Data.DataRowView」が表示されるのはなぜですか?

Barbara Streisand
リリース: 2024-11-02 03:55:30
オリジナル
785 人が閲覧しました

Why Does My WinForms Listbox Display

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 を表示するようにリストボックスに指示します。

解決策:

この問題を修正し、データベースからの実際の値を表示するには:

  • DisplayMember を実際の列名に設定します:
<code class="csharp">lstNames.DisplayMember = "Score";</code>
ログイン後にコピー
  • DataRowView 表現を使用して特定の値を取得します。
<code class="csharp">DataRowView drv = (DataRowView)lstNames.SelectedItem;
String valueOfItem = drv["NameAndScore"].ToString();</code>
ログイン後にコピー

このアプローチにより、選択した項目に関連付けられた個々の値にアクセスでき、基になる項目を操作できるようになります。必要に応じてデータを入力します。

以上がWinForms リストボックスに実際の値ではなく「System.Data.DataRowView」が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!