4

グリッドがあり、データがグリッドにロードされたとき。行を選択して編集ボタンを押すだけです。編集時に、新しいサブフォームが開かれ、行のセルの値がサブフォームのコントロールに渡されます。しかし、サブフォームのいくつかの値を変更し、それらを保存してグリッドに置き換えると、エラーが発生します:コントロールがデータバインドされている場合、行をプログラムで DataGridView の行コレクションに追加できません。このエラーの原因と、これを克服する方法。

4

3 に答える 3

4

原因は、「コントロールがデータバインドされている場合、DataGridView の行コレクションに行をプログラムで追加できない」ことです。結晶水のように透明です

解決策は?行を DataGridView の行コレクションに追加せず、基になるデータソース コレクション (DataGridView の DataSource プロパティに設定しているコレクション) に追加します

于 2012-07-12T05:16:18.547 に答える
1

の行を追加または編集しDataSourceますDataGridViewグリッドに直接追加/編集しないでください。

あなたDataSource is DataSetとあなたが新しい行を追加したい場合

DataSet dsTempDataTable = (DataSet)MainApplication.dgvBooksDetails.DataSource;
DataTable dt = dsTempDataTable.Tables[0]; // use table index/name to get the exact table
DataRow dr = dt.NewRow();
//  code to fill record
dt.Rows.Add(dr);

編集する

DataSet dsTempDataTable = (DataSet)MainApplication.dgvBooksDetails.DataSource;
DataTable dt = dsTempDataTable.Tables[0]; // use table index/name to get the exact table
dt.Rows[0]["columnName"] = "some value";
// your row edit  code
dt.AcceptChanges();
于 2012-07-12T05:25:51.967 に答える