ここで難しい質問があります。Access テーブルによって (DataGrid.ItemsSource) が埋められている DataGrid があります。
ユーザーに追加の列を表示し、(再) 並べ替え時にこの列の変更を保持するベスト プラクティスは何ですか?
私の場合、追加の列は、ユーザーが編集したい DataGrid 内の行を選択するための CheckBoxColumn です。DataGrid を並べ替えると、チェックが消えます。
コード:
using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "Test.accdb"))
{
string strDbCmd = "SELECT * FROM Table1";
OleDbDataAdapter daOleDb = new OleDbDataAdapter(strDbCmd, connection);
DataTable dtResult = new DataTable(); // this is actually a global
daOleDb.FillSchema(dtResult, SchemaType.Source);
daOleDb.Fill(dtResult);
DataGrid1.ItemsSource = dtResult.DefaultView;
DataGridCheckBoxColumn dgCol = new DataGridCheckBoxColumn();
DataGrid1.Columns.Insert(0, dgCol);
}
後でそれを使用してデータベースを更新するため、dtResult (実際にはグローバル) を変更することはできません。
// Later on somewhere else:
OleDbDataAdapter daOleDb = new OleDbDataAdapter(strDbCmd, connection);
// [...]
daOleDb.Update(dtResult);
もちろん、すべてのチェックを bool 配列などに格納することもできますが、DataGrid の並べ替え時にチェックを設定しておく賢い解決策はありますか?
よろしくお願いします!