DataGridViewでのRowsAddedイベントの注意点
2296 ワード
ASP.NETのGridViewコントロールでは、バインドデータを表示する際にRowDataUpdatedイベントがあり、そのイベント応答関数で各行ごとにバインドされたデータを行ごとにスキャンでき、必要に応じてGridView表示のフォーマットやValueなどを変更できるので便利です.
WinFormエンジニアリングでは、これと似たようなDataGridViewコントロールは、RowsAddedイベントのみが似ていますが、GridViewとは異なり、RowsAddedイベントの応答はRowDataUpdatedのように逐条応答していません.Debugでは長い間この問題を発見していましたが、実はDataGridViewRowsAddedEventArgs eのプロパティのRowCountを見ると、RowsAddedイベントの応答に複数行挿入する可能性があることがわかります.単行を挿入することもできます(Rowsは複数形で、愚かです).したがって、e.RowIndexを使用して挿入ローのインデックス値を取得し、e.RowCountを使用して挿入ローの数を取得します.この2つの変数を使用すると、バインドされたデータを簡単に巡回できます.コードは次のようになります.
WinFormエンジニアリングでは、これと似たようなDataGridViewコントロールは、RowsAddedイベントのみが似ていますが、GridViewとは異なり、RowsAddedイベントの応答はRowDataUpdatedのように逐条応答していません.Debugでは長い間この問題を発見していましたが、実はDataGridViewRowsAddedEventArgs eのプロパティのRowCountを見ると、RowsAddedイベントの応答に複数行挿入する可能性があることがわかります.単行を挿入することもできます(Rowsは複数形で、愚かです).したがって、e.RowIndexを使用して挿入ローのインデックス値を取得し、e.RowCountを使用して挿入ローの数を取得します.この2つの変数を使用すると、バインドされたデータを簡単に巡回できます.コードは次のようになります.
- private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
- {
- int rowIndex = e.RowIndex;
- int rowCount = e.RowCount;
- for (int i = rowIndex; i < rowIndex + rowCount; i++)
- {
- // List<AccountInfo> ,
- AccountInfo info = this.dataGridView1.Rows[i].DataBoundItem as AccountInfo;
-
- /////////////////////////////////////////
- //
- ///////////////////////////////////////////
- }
- }