2012-09-06 10 views
11

Ich habe Gruppierung des Rasters gemacht, indem ich Groupindex zu einer bestimmten Spalte in aspxgridview gegeben habe.ASPxGridView Group Zusammenfassung Sortierung - Es sortiert den Inhalt innerhalb, nicht die Zusammenfassung außerhalb

Zum Beispiel, wenn ich Gruppierung mittels Personen Name und die Bestellungen Details von dieser bestimmten Person würde in den detaillierten Inhalt kommen, wenn der Pfeil angeklickt wird, um den Inhalt anzuzeigen.

Wenn ich auf die Header-Felder klicken zu sortieren, wird es die Daten innerhalb des groupContent Sortierung aber es ist nicht für die Sortierung der Daten von groupsummary

ich alle zeige, verwendet die Summe als Teil der Gruppenübersicht neben dem Namen der Person.

Zum Beispiel, wenn Sie in den folgenden Link zu sehen:

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

Wenn Sie sortieren nach Firmenname, würde der Inhalt sortiert, aber die Zusammenfassung zeigt, das Land und die Summe hat keine Mittel, sortiert werden auf äußerer Ebene.

Bitte schlagen Sie mir Optionen vor, um dieses Problem zu lösen.

Danke.

+0

Vielleicht können diese Artikel helfen Ihnen: [ASPxGridView - Wie Gruppen sortieren] (http://www.devexpress.com/Support/Center/kb/p/K18508 .aspx) und [ASPxGridView - Sortieren von Gruppen über die GroupSummarySortInfo-Klasse] (http://www.devexpress.com/Support/Center/e/E3180.aspx). – Filip

Antwort

0

Wenn Sie nach einer Spalte gruppieren, dekomprimiert automatisch diese Spalte zum Sortieren. Ohne die Daten zu sortieren, ist die Gruppierung nicht möglich. Um dieses Problem zu beheben, haben wir die Datenquelle selbst sortiert und dann diese Datenquelle auf das Raster angewendet.

1

Hier ist eine Problemumgehung, basierend auf this Beispiel.
Die Hauptidee besteht darin, zusammenfassende Artikel zu erstellen, die den minimalen oder maximalen Wert von Country Spalte innerhalb City Gruppe zeigen und City Gruppe durch diese zusammenfassenden Werte sortieren. Dazu wird das Ereignis BeforeColumnSortingGrouping verwendet, um das Sortierverhalten zu ändern. Hier
ist Beispiel:

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