我有一个DataGrid。当我更改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列。
答案 0 :(得分:0)
如果可能,我会尝试撤消此操作,以便每次更改DataTable
中其中一列的名称时,DataGrid
都会更新。
如果您在DataGrid上将AutoGenerateColumns
设置为true
,这应该非常简单:
ItemsSource
属性)。INotifyPropertyChanged
,然后在DataTable上的列名发生更改时立即引发PropertyChanged
事件。答案 1 :(得分:0)
我也遇到了同样的问题,我将itemsource表首先放入temp变量并使itemsource表对象为null,然后删除列并将值重新分配给itemsource表对象...这对我有用.. < / p>
DataTable tempTable = ItemsourceDataTable;
ItemsourceDataTable= null;
tempTable.Columns.Remove("ColumnHeaderName");
ItemsourceDataTable= tempTable ;