1

我有一个数据网格。当我更改 DataGrid 的列名之一时,我希望出现一个事件,以便 DataTable(DataGrid 的 ItemSource)的列名也发生更改。

如何同步 DataGrid 和 DataTable 的列名?

编辑

我有这样的数据网格,有 6 列:

<wpfc4:RGrid x:Name="dgrid" Grid.Row="2" ItemsSource="{Binding Model.CurrentDataTable}" Style="{DynamicResource DataGridRStyle}" AutoGenerateColumns="True"></wpfc4:RGrid>

这个 RemoveSelectedColumn 函数:

 private void RemoveSelectedColumn()
    {
        DataGridColumn toRemove = this.Columns[_selectedColumnIndex];
        DataView view = this.ItemsSource as DataView;

        view.Table.Columns.Remove(toRemove.Header.ToString());  
        // deleting column from datatable.

        this.UpdateLayout();
        this.Items.Refresh();
    }

它正在从数据表中删除,但数据网格仍然有 6 列,但删除的列有空白值。我如何更新数据网格,以便当我从数据表中删除 2 列时它只显示 4 列。

4

2 回答 2

0

如果可能的话,我会尝试扭转这一点,以便任何时候更改 中的列之一的名称DataTableDataGrid都会更新。

如果您已在 DataGrid 上AutoGenerateColumns设置为true,这应该非常简单:

  1. 将 DataGrid 绑定到 DataTable(使用ItemsSourceDataGrid 的属性)。
  2. 确保包含 DataGrid 属性的类实现了,然后在 DataTable 上的列名称发生更改时INotifyPropertyChanged引发事件。PropertyChanged
于 2012-07-27T00:18:36.753 回答
0

我也有同样的问题,我首先在 itemsource table 中获取 temp 变量并使 itemsource 表对象为 null ,然后删除该列并将值重新分配给 itemsource 表对象......这对我有用..

DataTable tempTable = ItemsourceDataTable;
ItemsourceDataTable= null;
tempTable.Columns.Remove("ColumnHeaderName");
ItemsourceDataTable= tempTable ;
于 2016-02-22T14:29:12.127 回答