我找了很多类似的提问,都没找到答案,包括在stackoverflow.
正常的情况下,代码是可以运行的,但是一旦用户在datagrid中对某列排序了,接下来再编辑单元格也没问题,可是一旦在cellediteding事件中加入重新绑定,运行就会出错."{"在 AddNew 或 EditItem 事务过程中不允许“Sorting”。"}".
我想可能在datagrid编辑完之后,界面没有渲染完毕. 但是紧接着绑定,会破坏排序.
这个该怎么解决呢?
为了使用友好性考虑, 还是很希望能够实现排序后修改单元格刷新datagrid的. 谢谢了 !
private void DataGrid1_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) {
string sql="update table1 set field1='"+cell_value+''
BindGR();
}
private void BindGR()
{
//Bind DataGrid
if (dt != null)
{
DataGrid1.ItemsSource = dt.DefaultView;
}
}
http://bbs.csdn.net/topics/390407622
你用ObservableCollection了吗?
dataBinder()
遇到过类似的问题,一般都是没有修改完成或是没有绑定完成的时候就对datagrid控件进行操作造成的。
可以考虑用分页加快datagrid的加载速度,另外,可以用比较暴力的方法如:再调用绑定前加入DataGrid1.ItemsSource=null;
然后再重新加载。