C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

DataTableの何番目のindexか知りたい

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■90163 / inTopicNo.1)  DataTableの何番目のindexか知りたい
  
□投稿者/ やまびこ (4回)-(2019/02/13(Wed) 11:22:49)

分類:[.NET 全般] 

ListBoxがあります。このリストボックスのデータソースはDataTableです。
ListBoxで選択されている値がDataTableの何番目のindexか知るにはどうしたらいいでしょうか?

ListBox1.SelectedIndexでindex番号を知る事ができるのはわかります。
ただ、ListBoxでRowFilterを使った場合に選択されている値がDataTableの何番目かを知る方法を探していますが
わかりません。

WinForm, Visual Studio 2015、c#になります。
引用返信 編集キー/
■90164 / inTopicNo.2)  Re[1]: DataTableの何番目のindexか知りたい
□投稿者/ 魔界の仮面弁士 (2048回)-(2019/02/13(Wed) 12:27:09)
2019/02/13(Wed) 13:20:40 編集(投稿者)

No90163 (やまびこ さん) に返信
> ListBoxがあります。このリストボックスのデータソースはDataTableです。

DataTable を直接割り当てた場合、実際に処理されるのは
DataTable の DefaultView プロパティから返される DataView になりますね。

このとき、ListBox の各アイテムとしてバインドされる各行は
実際には DataRowView のインスタンスとなります。


> ListBoxで選択されている値がDataTableの何番目のindexか知るにはどうしたらいいでしょうか?

No90104 のように、ListBox の SelectedItem や Items[n] などを
DataRowView にキャストすると、そこから Row プロパティで
バインド元の DataRow インスタンスにアクセスすることが出来ます。

DataRow[] selectedRows = listBox1.SelectedItems.OfType<DataRowView>().Select(r => r.Row).ToArray();



dataTable.Rows.InsertAt などのために、元の index 位置を
知る必要がある場合には、IndexOf メソッドを使うことが出来ます。

int[] selectedIndices = selectedRows.Select(r => r.Table.Rows.IndexOf(r)).ToArray();
引用返信 編集キー/
■90175 / inTopicNo.3)  Re[2]: DataTableの何番目のindexか知りたい
□投稿者/ ヤマビコ (1回)-(2019/02/14(Thu) 14:56:45)
ありがとうございます。やりたい事ができました!
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ