2012-09-06 45 views
11

我已經通過給asinfgridview中的特定列提供groupindex來完成網格分組。ASPxGridView組彙總排序 - 它排序內部的內容,而不是外部總結

例如,如果我通過人員名稱進行分組,並且單擊箭頭查看內容時,該特定人員製作的訂單詳細信息將出現在詳細內容中。

當我點擊標題字段進行排序,則排序groupContent裏面的數據,但它不用於排序我顯示所有的的groupsummary

數據除了該人的姓名以外,作爲組彙總的一部分。

例如,如果你在下面的鏈接查看:

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

如果您是按公司名稱,內容會進行排序,但摘要顯示,該國與和沒有手段來獲得分類在外面的水平。

請確定解決此問題的選項。

謝謝。

+0

也許這些文章可以幫助你:[ASPxGridView - 如何排序組(http://www.devexpress.com/Support/Center/kb/p/K18508 .aspx)和[ASPxGridView - 如何通過GroupSummarySortInfo類對組進行排序](http://www.devexpress.com/Support/Center/e/E3180.aspx)。 – Filip

回答

0

當您按列分組時,devexpress會自動使用該列進行排序。沒有對數據進行排序,分組是不可能的。爲了克服這個問題,我們對數據源本身進行了排序,然後將該數據源應用到網格。

1

這是基於this示例的解決方法。
主要想法是創建彙總項目,該彙總項目顯示City組內的Country列的最小值或最大值,並按此彙總值對City組進行排序。對於此BeforeColumnSortingGrouping事件用於更改排序行爲。
這裏是例子:

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