|
ありがとうございます。
> それは例えば、こういうコードの事でしょうか? > > 《C#》 > DataRow row = ((DataRowView)dataGridView1.Rows[行].DataBoundItem).Row; > > 《VB (Option Strict Off)》 > Dim row As DataRow = DataGridView1.Rows(行).DataBoundItem.Row > > 《VB (Option Strict On)》 > Dim row As DataRow = DirectCast(DataGridView1.Rows(行).DataBoundItem, DataRowView).Row
そうです。 実際私もこのようにDataRowを取得しています。 > >>逆のDataRow→DataGridViewのRowIndex取得方法についてはあまり記載されていません。 > > DataGridView は、自身の DataSource に何が割り当てられているかを知っていますが、 > DataTable は、自分がどのクラスの DataSource に割り当てられているのかを把握できません。 > (一つの DataTable を、複数の DataGridView に割り当てることもできますし) > > > ですから、DataGridView → DataRow という探し方はできたとしても、 > DataTable → DataGridViewRow という探し方はできません。
そうでしたか… 勉強不足でスミマセン…
ただ、DataTable.DefaultView(DataView)に保持している順序はDataGridViewでの表示順と同じだと 認識しているのですが… そこから辿っていくすべがあるのかと思いまして… 例えば DataTable.DefaultViewから現在作業中のDataRowに対応するDataRowViewが特定できないかと… 今試行錯誤しているのですが…
DataTable dtbl = (DataTable)grid.DataSource; DataRow drow = dtbl.Rows[xx]; // 作業している行です… int index = 0; foreach(DataRowView drv in dtbl.DefaultView){ if(drv.Row == drow){ break; } index++; }
これで一応表示上の行インデックスは取得できたのですが… なんだかスマートじゃないとおもいまして…
実際現在作業しているDataRowに該当するグリッド上のインデックスを取得するには どのようにするのがよいのかご存知でしたら教えていただけないでしょうか。 よろしくお願いします。
|