【发布时间】:2013-05-13 10:24:07
【问题描述】:
这里有一个棘手的问题: 我有一个由访问表填充的 DataGrid (DataGrid.ItemsSource)。
为用户显示其他列并在(重新)排序时保留此列中的更改的最佳做法是什么?
在我的情况下,附加列是用户的 CheckBoxColumn,用于选择他想要编辑的 DataGrid 中的那些行。如果您对 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);
现在我当然可以将所有检查存储在一个布尔数组或任何东西中,但是有没有一个聪明的解决方案可以在对 DataGrid 排序时保持检查设置?
问候!
【问题讨论】:
标签: c# wpf datagrid itemssource