0
<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 网格。然后我按“按我分组”列对数据进行分组。然后我编辑了第一行并将“data 1”更改为“qwe”。行在分组数据的末尾移动。

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

4

2 回答 2

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();

我所做的更改是:

  • 引入唯一标识符列
  • 在 Identifier 列上添加排序描述符
  • 在 ui 上不显示标识符列

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

希望这能回答你的问题。

Lohith (Tech Evangelist, Telerik India)

于 2012-08-21T19:48:04.007 回答
0

添加一个自动增量列。还与 Group By 一起订购行,我认为您缺少 Using 语句?

于 2012-08-21T16:51:33.393 回答