データベーステーブルにバインドされた DataGridView があります。Visual Studio は、グリッドとバインド ナビゲーター ツールストリップを作成しました。ナビゲート、挿入、削除は正常に機能しています...しかし:列ヘッダーをクリックしてグリッドを並べ替えると、行を挿入するとグリッドが台無しになります。RowsAdded イベント ハンドラに渡された行インデックスが間違っています。以前はソートされていないモードで問題がなかった最後の行のインデックスです。ソート モードで、間違った行を編集していて、正しい行のインデックスを見つける機会がありません。インデックスが常に最後の行であっても、データ バインドされたすべての列が正しく表示されます。この問題は、データがバインドされていない列で発生します。私の場合、データバインドされた列に依存する画像列。画像は常に最後の行に描画されます。したがって、ソートを無視します...
RowsAdded イベント ハンドラーで行っていることは次のとおりです。
for (int i = 0; i < e.RowCount; ++i)
{
DataGridViewRow row = dataGridView_Energietraeger.Rows[i + e.RowIndex];
object idObj = row.Cells[Column_Id.Index].Value;
if (idObj is System.DBNull || idObj == null)
{
// set default values to all cells in new row...
// set icon indicating ro/ rw mode - wrong row when sorted!
row.ReadOnly = (bool)readonlyObj;
SetIconCellImage(row);
}
else
{
object readonlyObj = row.Cells[Column_Readonly.Index].Value;
if (!(readonlyObj is System.DBNull) && readonlyObj != null)
{
row.ReadOnly = (bool)readonlyObj;
SetIconCellImage(row); //
}
}
}
ヒントはありますか?データバインディングのロジックと、行とデータソースへのアクセス方法を理解していなかったのかもしれません。しかし、私はまだ自分の間違いを見ることができません。前もって感謝します... ホルガー