【发布时间】:2018-11-29 22:13:29
【问题描述】:
我有一个 DataGrid(名为 m_grid)设置,以便它显示 DataTable 的行:
<DataGrid name="m_grid">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Locked"
Binding="{Binding '[Locked]'}"/>
...
</DataGrid.Columns>
</DataGrid>
我在后面的代码中填充网格是这样的:
DataTable l_table = Database.GetTable("SELECT * FROM Reports")
m_grid.ItemsSource = l_table.Rows;
我有一个上下文菜单,点击事件附加了以下方法:
DataRow l_row = m_grid.SelectedItem as DataRow;
int l_id = (int)l_row["Report ID"];
int l_result = Database.Execute("Update [Reports] SET [Locked] = not [Locked] WHERE [Report ID]=" + l_id;
if (l_result > 0){
l_row["Locked"] = !l_row["Locked"];
}
单击运行后,数据库更新,行中的值发生了变化,但DataGrid保持不变。我尝试使用
m_grid.BeginEdit();
// execute code
m_grid.CommitEdit();
但这没有任何效果。我是否在这里遗漏了什么,或者我是否需要更改将数据绑定到网格的方式。谢谢。
【问题讨论】:
标签: c# wpf data-binding datatable wpfdatagrid