我的datagrid看起来像这样 - 它绑定到ItemSource(datatable)
当我删除列时,我基本上重命名列名,所以如果我删除第2列,那么它将会变成这样:
但是如果你在这里观察,datagrid的数据包含1,4,5,6,“”而不是1,3,4,5,6。当我检查datagrid row.ItemArray然后它给了我“1,3,4,5,6”然后我不知道为什么我的单元格显示差异数据比Row有。甚至My ItemSource也包含正确的值。
请参阅此图片:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/ec68b511-7bb3-4170-aa42-125c2c6dde75
请帮助。
修改
在DataGrid中重命名:
private void RemoveSelectedColumn()
{
DataGridColumn toRemove = this.Columns[_selectedColumnIndex];
DataView view = this.ItemsSource as DataView;
// fire the event for preview columns collection change
CollectionChangeEventArgs args = new CollectionChangeEventArgs(CollectionChangeAction.Remove, toRemove);
OnColumnCollectionChanging(args);
view.Table.Columns.Remove(toRemove.Header.ToString());
if (this.IsColumnRenameRequired)
{
RenameDataGridColumns();
this.Items.Refresh();
}
// if there is no column left, adding new blank column
if (this.Columns.Count == 0) //this.Columns.Count == 1
{
view.Table.Columns.Add(this.DefaultColumnHeader + " 1"); // needs to be changed
}
}
private void RenameDataGridColumns()
{
for (int i = 0; i < this.Columns.Count; i++)
{
this.Columns[i].Header = string.Format("{0}{1}", this.DefaultColumnHeader, i + 1);
}
}
在ItemSource中重命名:
private void RenameAllDataColumns()
{
for (int i = 0; i < this.CurrentDataTable.Columns.Count; i++)
{
this.CurrentDataTable.Columns[i].ColumnName = string.Format("{0}{1}", this.LabelTypeService.CurrentLabelType.DefaultColumnName, i + 1);
}
}
它基本上首先重命名Datatable列然后重命名Datagrid列。