在使用wpf的DataGrid的过程中,有这样一个问题,对某一列进行排序后修改某一行的内容,,ProductsDataGrid.ItemsSource = dataTable.DefaultView出现一个报错AddNew 或 EditItem 事务过程中不允许“Sorting”。知道报错原因后,通过网上的ProductsDataGrid.CancelEdit(DataGridEditingUnit.Row);并不能解决问题,还会出现程序无法继续运行和其他问题
<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch" Margin="5,5"
Name="ProductsDataGrid" VerticalAlignment="Stretch" ItemsSource="{Binding}"
HorizontalGridLinesBrush="Gainsboro" VerticalGridLinesBrush="Gainsboro"
BeginningEdit="ProductsDataGrid_BeginningEdit" CellEditEnding="ProductsDataGrid_CellEditEnding"
CanUserResizeColumns="False">
<DataGrid.Columns >
<DataGridTextColumn Header="芯片编号" Width="250" Binding="{Binding chipID}" IsReadOnly="True"/>
<DataGridTextColumn Header="芯片号码" Width="250" Binding="{Binding chipNumber}" IsReadOnly="True"/>
<DataGridTextColumn Header="芯片状态" Width="*" Binding="{Binding stateName}" IsReadOnly="False"/>
</DataGrid.Columns>
</DataGrid>
DataTable dataTable = new DataTable();
dataTable.Columns.Add("chipID", typeof(int));
dataTable.Columns.Add("chipNumber", typeof(string));
dataTable.Columns.Add("stateID", typeof(int));
dataTable.Columns.Add("stateName", typeof(string));
foreach (ChipInfo chipInfo in list)
{
DataRow dataRow = dataTable.NewRow();
dataRow["chipID"] = chipInfo.chipID;
dataRow["chipNumber"] = chipInfo.chipNumber;
dataRow["stateID"] = chipInfo.stateID;
dataRow["stateName"] = chipInfo.stateName;
dataTable.Rows.Add(dataRow);
}
ProductsDataGrid.ItemsSource = dataTable.DefaultView;
ProductsDataGrid.GridLinesVisibility = DataGridGridLinesVisibility.All;