DataGridViewの4行目に当たるDataTableの行を取得したい、とかやりたい時ありますよね。
通常はそのまま同じ4行目が対応する行になるのですが、
ソートをしてしまうとDataGridViewはソートされますが、DataTableはソートされず、
行番号が食い違うようになってしまいます。
その場合、下記関数をご利用ください。
- #Region "DataGridViewのRowIndexからDataTableのDataRowを取得する"
- ''' <summary>
- ''' DataGridViewのRowIndexからDataTableのDataRowを取得する
- ''' </summary>
- ''' <param name="RowIdx">''' <returns></returns>
- ''' <remarks>ソート時など、DataGridViewのRowIndexが必ずしもDataTableのRowIndexとマッチしないため</remarks>
- Public Function GetDataRow_ByDataGridViewRowIdx(ByVal RowIdx As Integer) As DataRow
- Try
- If Me.Rows(RowIdx).DataBoundItem Is Nothing Then
- Return Nothing
- End If
- Catch ex As IndexOutOfRangeException
- Return Nothing
- End Try
- Dim Dr As DataRow
- Dim Drv As DataRowView = CType(Me.Rows(RowIdx).DataBoundItem, System.Data.DataRowView)
- Dr = CType(Drv.Row, System.Data.DataRow)
- Return Dr
- End Function
- #End Region
対応するDataRowが取得できます。
これで行移動時に値の編集するなど、DataRowをいじっちゃってください。
0 件のコメント:
コメントを投稿