我多次搜索数据网格刷新问题。但无法了解它。我的问题如下。基本上它可以工作。 但是如果用户对列进行排序然后编辑单元格,则数据网格无法绑定。 VS会列出错误" {"一旦AddNew或EditItem不允许“排序”。&# 34;}"
但是,允许用户对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;
}
}
答案 0 :(得分:0)
<强> View.xaml 强>
<DataGrid x:Name="MyDataGrid"
Sorting="DataGrid_OnSorting"
ItemsSource="{Binding DataGridItems, Mode="TwoWay"}">
</DataGrid>
<强> View.xaml.cs 强>
private ObservableCollection<DataClass> dataGridItems = new ObservableCollection<DataClass>();
public ObservableCollection<DataClass> DataGridItems
{
get { return dataGridItems; }
set { SetProperty(ref dataGridItems, value); }
}
请尝试使用TwoWay绑定,即模式=“TwoWay” Itemssource
如果不起作用,请尝试以下代码。我没有测试代码,因为它没有完全实现。试着从中得到一个想法!
private void DataGrid_OnSorting(object sender, DataGridSortingEventArgs e)
{
var sortedGrid = sender as DataGrid;
foreach (var item in sortedGrid.Items)
{
DataGridItems.Add(item);
}
}
答案 1 :(得分:0)
RowEditEnding事件的项目源更新。使用RowEditEnding事件而不是CellEndEditing,并在列绑定上使用UpdateSourceTrigger = LostFocus。
<DataGridTextColumn Binding="{Binding bindedProperty,StringFormat=n0 , Mode=TwoWay , UpdateSourceTrigger=LostFocus}"></DataGridTextColumn>