编辑分组数据会更改行顺序

时间:2012-08-21 16:41:59

标签: c# .net wpf telerik radgridview

<t:RadGridView AutoGenerateColumns="True" ShowGroupPanel="True" Name="gridView" />

    public MainWindow()
    {
        InitializeComponent();

        DataTable dt = new DataTable("Row Order Checker");
        dt.Columns.Add("Group by me");
        dt.Columns.Add("Data for editing");

        dt.Rows.Add("1", "data 1");
        dt.Rows.Add("1", "data 2");
        dt.Rows.Add("1", "data 3");

        gridView.ItemsSource = dt.AsDataView();
    }

我在表单上添加了简单的telerik网格。 然后我按“Group by me”列分组数据。 然后我编辑了第一行并将“数据1”更改为“qwe”。 行在分组数据的末尾移动。

如何避免这种奇怪的behaiour?我希望排在同一个地方。

2 个答案:

答案 0 :(得分:0)

添加自动增量列。还要按行分组排序行,我认为您缺少使用语句?

答案 1 :(得分:0)

你提到的并不是一种奇怪的行为。它实际上使用默认算法对列进行排序。为了实现您的方案,您需要修改代码,如下所示:

XAML:

<telerik:RadGridView AutoGenerateColumns="False" ShowGroupPanel="True" Name="gridView">
            <telerik:RadGridView.Columns>
                <telerik:GridViewDataColumn DataMemberBinding="{Binding GroupByMe}" Header="Group By Me"   />
                <telerik:GridViewDataColumn DataMemberBinding="{Binding DataForEditing}" Header="Data For Editing" />
            </telerik:RadGridView.Columns>
        </telerik:RadGridView>

代码背后:

DataTable dt = new DataTable("Row Order Checker");
dt.Columns.Add("Identifier", typeof(int));
dt.Columns.Add("GroupByMe");
dt.Columns.Add("DataForEditing");

dt.Rows.Add(1, "1", "data 1");
dt.Rows.Add(2, "1", "data 2");
dt.Rows.Add(3, "1", "data 3");

SortDescriptor sortDescriptor = new SortDescriptor();
sortDescriptor.Member = "Identifier";
sortDescriptor.SortDirection = ListSortDirection.Ascending;
gridView.SortDescriptors.Add(sortDescriptor);

gridView.ItemsSource = dt.AsDataView();

我所做的改变是:

  • 介绍唯一标识符列
  • 在标识符列上添加排序描述符
  • ui上的
  • 不显示标识符列

使用上面的代码按“GroupByMe”列进行分组时,它仍将在标识符列上进行排序。由于标识符未显示且保持不变,因此编辑的行保持不变,而不改变其位置

希望这能回答你的问题。

Lohith(技术传播者,Telerik India)