2012-09-06 12 views
11

Dokonałem grupowania siatki, podając groupindex do konkretnej kolumny w aspxgridview.Grupowanie podsumowanie grupy ASPxGridView Sortuje zawartość wewnątrz, a nie podsumowanie pod

Na przykład, jeśli zgrupuję według nazwiska osoby, szczegóły zamówienia wykonane przez tę konkretną osobę znajdą się w szczegółowej treści, gdy kliknięta zostanie strzałka, aby wyświetlić zawartość.

Po kliknięciu na polach nagłówka do sortowania, jest sortowanie danych wewnątrz groupContent ale nie służy do sortowania danych groupsummary

ja pokazujący wszystkie sumy jako część podsumowania zbiorczego oprócz nazwiska osoby.

Na przykład jeśli zobaczysz w poniższym linku:

https://demos.devexpress.com/ASPxGridViewDemos/Summary/GroupSortBySummary.aspx

Jeśli sortować według nazwy firmy, treść będzie sortowane, ale podsumowanie pokazujące kraj i suma nie ma możliwości, aby uzyskać sortowane na poziomie zewnętrznym.

Proszę sugerować mi opcje rozwiązania tego problemu.

Dzięki.

+0

Może te artykuły mogą pomóc: [ASPxGridView - Jak sortować grupy] (http://www.devexpress.com/Support/Center/kb/p/K18508 .aspx) i [ASPxGridView - Jak sortować grupy za pośrednictwem klasy GroupSummarySortInfo] (http://www.devexpress.com/Support/Center/e/E3180.aspx). – Filip

Odpowiedz

0

Podczas grupowania według kolumny devexpress automatycznie używa tej kolumny do sortowania. Bez sortowania danych grupowanie nie jest możliwe. Aby rozwiązać ten problem, posortowaliśmy źródło danych, a następnie zastosowaliśmy to źródło danych do siatki.

1

Oto sposób obejścia tego problemu, oparty na przykładzie z przykładu this.
Głównym celem jest utworzenie podsumowania zawierającego minimalną lub maksymalną wartość kolumny Country wewnątrz grupy City i posortowanie grupy City według tych wartości podsumowania. Dla tego zdarzenia BeforeColumnSortingGrouping służy do zmiany zachowania sortowania.
Oto przykład:

<dx:ASPxGridView ... 
    OnBeforeColumnSortingGrouping="gridCustomers_BeforeColumnSortingGrouping"> 
private void SortByCountry() 
{ 
    gridCustomers.GroupSummary.Clear(); 
    gridCustomers.GroupSummarySortInfo.Clear(); 

    var sortOrder = gridCustomers.DataColumns["Country"].SortOrder; 

    SummaryItemType summaryType = SummaryItemType.None; 

    switch (sortOrder) 
    { 
     case ColumnSortOrder.None: 
      return; 
      break; 
     case ColumnSortOrder.Ascending: 
      summaryType = SummaryItemType.Min; 
      break; 
     case ColumnSortOrder.Descending: 
      summaryType = SummaryItemType.Max; 
      break; 
    } 

    var groupSummary = new ASPxSummaryItem("Country", summaryType); 
    gridCustomers.GroupSummary.Add(groupSummary); 

    var sortInfo = new ASPxGroupSummarySortInfo(); 
    sortInfo.SortOrder = sortOrder; 
    sortInfo.SummaryItem = groupSummary; 
    sortInfo.GroupColumn = "City"; 

    gridCustomers.GroupSummarySortInfo.AddRange(sortInfo); 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    SortByCountry(); 
} 

protected void gridCustomers_BeforeColumnSortingGrouping(object sender, ASPxGridViewBeforeColumnGroupingSortingEventArgs e) 
{ 
    SortByCountry(); 
}