删除和重命名列时WPF数据网格布局问题

时间:2012-07-26 13:22:36

标签: wpf datagrid rename

我的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列。

0 个答案:

没有答案