1

データベーステーブルにバインドされた 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);  //
                }
            }
        }

ヒントはありますか?データバインディングのロジックと、行とデータソースへのアクセス方法を理解していなかったのかもしれません。しかし、私はまだ自分の間違いを見ることができません。前もって感謝します... ホルガー

4

0 に答える 0