注意:ここで紹介しているDataGridは、System.Windows.Forms名前空間のDataGrid(Windowsフォーム)です。System.Web.UI.WebControls名前空間のDataGrid(Webフォーム)ではありません。
簡単に考えると、DataGridの現在の行のインデックスはDataGrid.CurrentRowIndexプロパティで取得できるため、これとDataTable.Rowsプロパティを使って現在の行(DataRow)が取得できそうです。
Dim dt As DataTable = CType(DataGrid1.DataSource, DataTable) Dim dr As DataRow = dt.Rows(DataGrid1.CurrentRowIndex)
DataTable dt = (DataTable) DataGrid1.DataSource; DataRow dr = dt.Rows[DataGrid1.CurrentRowIndex];
しかし残念ながらこの方法では、例えば並び替えをした後などでは、正しく現在の行を取得できません。正しく現在の行を取得するためには、BindingManagerBase.Currentプロパティを使用します。以下の例では、DataGrid1.DataSourceにDataTableオブジェクトを設定しているものとします。
Dim bm As BindingManagerBase = _ DataGrid1.BindingContext(DataGrid1.DataSource, DataGrid1.DataMember) Dim drv As DataRowView = CType(bm.Current, DataRowView) Dim dr As DataRow = drv.Row
BindingManagerBase bm = DataGrid1.BindingContext[DataGrid1.DataSource, DataGrid1.DataMember]; DataRowView drv = (DataRowView) bm.Current; DataRow dr = drv.Row;
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。