日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何对DevExpress ASPxGridView进行分组排序?

發布時間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何对DevExpress ASPxGridView进行分组排序? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有時候客戶想要在一個域內對ASPxGridView的欄進行分組,而在另一個域內對其排序。本文中,我想描述一下如何通過不同的方法實現這個特點。因為,這并不像它可能看起來的那樣簡單。

在設計時,我們創建了一個簡單的網格,它的數據從數據源控件處獲得。我們想按城市來對ASPxGridView進行分組,而按國家對它進行排序。

這個任務可以通過以下幾種方法來解決:

1.通過自定義欄位排序:按城市將網格分組,但是通過自定義欄位排序事件按國家對其排序。

2.在另一個域內對網格排序:按城市將網格分組,但是通過分組匯總排序信息類按國家對其排序。

3.通過自定義匯總類型對網格排序:按城市將網格分組,但是通過分組匯總排序信息類和自定義匯總計算事件按國家對其排序。

4.通過它們的名字對值進行排序:使用GridViewDataComboBoxColumn文本完成分組。

下面,你可以找到一些關于這些任務的更詳細的描述:

1.自定義欄位排序:按城市將ASPxGridView分組,但是通過自定義欄位排序事件按國家對其排序。

要使用這種方法,你應該運用ASPxGridView.CustomColumnSort 事件。一個欄的Settings.SortMode 屬性指定了當對這個欄進行排序時,網格的數據是如何被排序的。在我們這個例子中,屬性值被設為‘自定義’。因此,一個針對‘城市’欄的自定義排序算法將會 通過處理自定義欄位排序事件被執行。

[ASPx]

<dx:GridViewDataTextColumn FieldName="City" VisibleIndex="2" GroupIndex="0">

<Settings SortMode="Custom"/>

</dx:GridViewDataTextColumn>

在自定義欄位排序事件句柄中,我們對兩行進行了比較。通過CustomColumnSortEventArgs.Column 參數來指定被處理的欄位。CustomColumnSortEventArgs.Value1 和CustomColumnSortEventArgs.Value2 兩個參數區分出在這個欄中的行值。

自定義比較的結果用來設定CustomColumnSortEventArgs.Result 的參數,如下所示:

  • 結果設為-1的情況,當數據以升序排列時,第一行應該放置在第二行的上面或者當數據位降序排列時,第一行放置在第二行的下面。
  • 結果設為1的情況,當數據以升序排列時,第一行應該放置在第二行的下面或者當數據位降序排列時,第一行放置在第二行的上面。
  • 結果設為0時表示這兩行相等。這種情況下,這些行在網格里的位置將會根據它們在數據源里的索引來確定。

我們把e.handled參數的值設為真,從而忽略掉默認的比較機制。

[C#]

protected void gridCustomers_CustomColumnSort(object sender, CustomColumnSortEventArgs e) {

if (e.Column != null & e.Column.FieldName == "City") {

object country1 = e.GetRow1Value("Country");

object country2 = e.GetRow2Value("Country");

int res = Comparer.Default.Compare(country1, country2);

if (res == 0) {

object city1 = e.Value1;

object city2 = e.Value2;

res = Comparer.Default.Compare(city1, city2);

}

e.Result = res;

e.Handled = true;

}

}

2.在另一個域內對ASPxGridView排序:按城市將ASPxGridView分組,但是通過分組匯總排序信息類按國家對其排序。

根據ASPxGroupSummarySortInfo對象提供的信息,基于此信息得到的匯總值來將組中的行排序。這些對象引入的屬性代表了排序次序,用來計算匯總值的匯總項,等等。這些屬性是只讀的,并且由構造函數來初始化。

通過匯總值來排序組中的行,創建一個ASPxGroupSummarySortInfo對象,使用 GroupSummarySortInfoCollection.Add 方法把它添加到ASPxGridView的分組匯總排序信息集合里。把ASPxGroupSummarySortInfo對象添加到這個集合以后,組中的 行就會根據它們的匯總值自動的排序。

[C#]

gridCustomers.GroupSummarySortInfo.Clear();

ASPxGroupSummarySortInfo sortInfo = new ASPxGroupSummarySortInfo();

sortInfo.SortOrder = ColumnSortOrder.Ascending;

sortInfo.SummaryItem = gridCustomers.GroupSummary["Country", SummaryItemType.Min];

sortInfo.GroupColumn = "City";

3.通過自定義匯總類型對ASPxGridView排序:按城市將ASPxGridView分組,但是通過分組匯總排序信息類和自定義匯總計算事件按國家對其排序。

這種方法與前一種方法的不同點僅僅在于排序機制使用了一個自定義的匯總值。匯總自定義計算法則應用到自定義匯總計算事件句柄中。自定義匯總計算事件會觸發 匯總計算中涉及到的每一行。當計算總的匯總值的時候,該事件將會被每一個數據行觸發。在當前這個例子里,為了簡單起見,自定義的總的匯總值等于子匯總值。

請參考ASPxGridView.CustomSummaryCalculate 事件和自定義匯總函數,這有助于學習更多關于自定義匯總計算過程的知識。

[C#]

gridCustomers.GroupSummarySortInfo.Clear();

ASPxGroupSummarySortInfo sortInfo = new ASPxGroupSummarySortInfo();

sortInfo.SortOrder = ColumnSortOrder.Ascending;

sortInfo.SummaryItem = gridCustomers.GroupSummary["Country", SummaryItemType.Custom];

sortInfo.GroupColumn = "City";

gridCustomers.GroupSummarySortInfo.AddRange(sortInfo);


[C#]

protected void gridCustomers_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e) {

ASPxSummaryItem item = e.Item as ASPxSummaryItem;

if (item.FieldName == "Country") {

if (e.SummaryProcess == CustomSummaryProcess.Finalize)

e.TotalValue = e.FieldValue.ToString();

}

}

4.通過它們的名字對值進行排序:使用GridViewDataComboBoxColumn文本完成分組。

想通過文本而不是值來對GridViewDataComboBoxColumn進行排序的話,你應該將ASPxGridViewBehaviorSettings.SortMode 屬性值設為‘顯示文本’。

[ASPx]

<SettingsBehavior SortMode="DisplayText" />

同樣,這種方法演示了如何為已分組的欄顯示一個自定義文本。你應該使用GroupRowContent模板來完成這個任務。

[ASPx]

<Templates>

<GroupRowContent>

<%# "Category: " + Container.GroupText%>

</GroupRowContent>

</Templates>

轉載于:https://www.cnblogs.com/ydfq-home/p/5017561.html

總結

以上是生活随笔為你收集整理的如何对DevExpress ASPxGridView进行分组排序?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。