翻譯|使用教程|編輯:龔雪|2025-07-21 10:37:46.390|閱讀 91 次
概述:本教程主要為大家介紹如何使用DevExpress WinForms控件實現自定義分組算法,歡迎下載最新版組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
DevExpress WinForms擁有180+組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!
默認情況下,通過在每個組中放入相同的值來形成數據組。盡管DevExpress WinForms網格提供了一些其他內置算法,但有時您需要實現自己的邏輯,這是使用GridViewCustomColumnGroup事件完成的。在本文中您將了解如何處理此事件,以便更改數字列的數據分組邏輯,分組包含從0到99.99,然后從100到199.99等開始的值范圍。
獲取DevExpress WinForms v25.1正式版下載
DevExpress技術交流群11:749942875 歡迎一起進群討論
當您根據Order Sum列對網格數據進行分組時,默認情況下,分組是基于該列中的唯一值形成的。
切換到設計時,首先,通過將屬性設置為來啟用該列的自定義排序模式。
之后,選擇網格視圖并處理它的事件,要處理的列由事件的參數指定,事件處理程序將兩行與和參數指定的值進行比較。由于要將值組合成與百相對應的組,因此將值除以100并比較結果。為了將大于1000的所有值放入同一組,處理程序假設如果結果都大于10,則結果相等。在這種情況下,參數被設置為0,其他值進行標準比較。
事件的參數被設置為true,以防止在事件執行后調用默認的比較機制。
C#
private void gridView_CustomColumnGroup(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnSortEventArgs e) { if (e.Column.FieldName == "Order Sum") { e.Handled = true; double val1 = Math.Floor(Convert.ToDouble(e.Value1) / 100); double val2 = Math.Floor(Convert.ToDouble(e.Value2) / 100); if (val1 >= 10 && val2 >= 10) e.Result = 0; else e.Result = System.Collections.Comparer.Default.Compare(val1, val2); } }
為了更好地說明這段代碼是如何工作的,即使在對數據進行分組時,分組列值也應該是可見的。要啟用此操作,展開并將選項設置為true。
現在運行應用程序并按Order Sum列對網格數據進行分組,因此將行組合到指定的間隔中。但是組行在相應的組中顯示第一個值,從而誤導最終用戶,這也是可以修復的。
返回到設計時并訂閱事件,檢查事件的和參數。第一個參數指定當前正在處理的列,而第二個參數指示是否調用事件來自定義組行顯示文本,參數 返回當前處理的組行。要更改組行的顯示文本,使用事件的參數。
C#
using DevExpress.XtraGrid.Views.Grid; //... private void gridView_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) { GridView view = sender as GridView; if (view == null) return; if (e.Column.FieldName == "Order Sum" && e.IsForGroupRow) { double rowValue = Convert.ToDouble(view.GetGroupRowValue(e.GroupRowHandle, colOrderSum)); double val = Math.Floor(rowValue / 100); if (val >= 10) e.DisplayText = string.Format(">= {0:c} ", val * 100); else e.DisplayText = string.Format("{0:c} - {1:c} ", val * 100, (val + 1) * 100 - 0.01); } }
運行應用程序并再次按Order Sum列對數據進行分組,組行現在將顯示正確標識間隔的自定義文本。
慧都是?家?業數字化解決?案公司,專注于軟件、?油與?業領域,以深?的業務理解和?業經驗,幫助企業實現智能化轉型與持續競爭優勢。
慧都科技是DevExpress的中國區的合作伙伴,DevExpress作為用戶界面領域的優秀產品,幫助企業高效構建權限管理、數據可視化(如網格/圖表/儀表盤)、跨平臺系統(WinForms/ASP.NET/.NET MAUI)及行業定制解決方案,加速開發并強化交互體驗。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網