- PR -

[VS.NET2005][C#]バインドしているDataGridViewに対し、CurrentRowの次行に行挿入をしたい

1
投稿者投稿内容
ベテラン
会議室デビュー日: 2005/05/16
投稿数: 85
お住まい・勤務地: 千葉県在住
投稿日時: 2007-02-08 14:36
【環境】
OS:WindowsXPPro
VS:VS.NET2005
言語:C#
AP:Windowsアプリ

ここ最近、質問ばかりで申し訳ありません。

現在、DataSet(或いはDataView)をバインドしているDataGridViewに対して、CurrentRowの次行に行挿入をしようとしています。

DataGridView上の行番号は「CurrentCell.RowIndex」で取得できるのですが、これではソートやフィルタを行っていた場合に、バインド元の行番号と異なってしまいます。

CurrentRowがバインド元では何行目であったか、調べる方法は無いでしょうか?
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-02-08 20:21
「バインド元」ってDataTableのことを指していますか?
でしたら、CurrentRowのDataBoundItemをDataRowViewにキャストして、
そのRowプロパティ(DataRow)を元テーブルのRows.IndexOfに渡す…とかで
求められなくはないと思います。

ただ、それで求めた位置に行挿入してお望みの結果が得られるかは疑問です。
ソートはバインドされているDefaultViewに対してかかりますから、
新しく挿入された行の値に基づき再ソートされてしまうと思います。
ベテラン
会議室デビュー日: 2005/05/16
投稿数: 85
お住まい・勤務地: 千葉県在住
投稿日時: 2007-02-09 08:38
KIさん、こんにちは。

引用:

でしたら、CurrentRowのDataBoundItemをDataRowViewにキャストして、
そのRowプロパティ(DataRow)を元テーブルのRows.IndexOfに渡す…



この方法で、欲しい行番号が取得できました。
ご指摘の通り、ソートをかけた状態では、挿入後に結局再ソートされてしまいましたが、DataTableでは挿入したい位置に行を挿入できたので、取り敢えずのところはこれで満足です。

KIさん。有難う御座いました。
1

スキルアップ/キャリアアップ(JOB@IT)