单元格编辑后无法刷新WPF DataGrid

时间:2016-05-01 02:00:47

标签: c# wpf data-binding

我多次搜索数据网格刷新问题。但无法了解它。我的问题如下。基本上它可以工作。 但是如果用户对列进行排序然后编辑单元格,则数据网格无法绑定。 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;

        }

    }

2 个答案:

答案 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>