<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?我希望排在同一个地方。
答案 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();
我所做的改变是:
使用上面的代码按“GroupByMe”列进行分组时,它仍将在标识符列上进行排序。由于标识符未显示且保持不变,因此编辑的行保持不变,而不改变其位置
希望这能回答你的问题。
Lohith(技术传播者,Telerik India)