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

フォームに単純なテレリック グリッドを追加しました。次に、「Group by me」列でデータをグループ化しました。次に、最初の行を編集して、「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();

私が行った変更は次のとおりです。

  • 一意の識別子列を導入する
  • 識別子列にソート記述子を追加します
  • UIに識別子列が表示されない

上記のコードでは、「GroupByMe」列でグループ化すると、識別子列で並べ替えられます。識別子は表示されず、変更されないため、編集された行はその位置を変更せずにそのまま残ります

これがあなたの質問に答えることを願っています。

Lohith (Telerik India テック エバンジェリスト)

于 2012-08-21T19:48:04.007 に答える
0

自動増分列を追加します。Group By と一緒に行を並べ替えると、Using ステートメントが欠落していると思いますか?

于 2012-08-21T16:51:33.393 に答える