翻譯|使用教程|編輯:龔雪|2025-07-21 10:37:46.390|閱讀 91 次
概述:本教程主要為大家介紹如何使用DevExpress WinForms控件實(shí)現(xiàn)自定義分組算法,歡迎下載最新版組件體驗(yàn)!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
DevExpress WinForms擁有180+組件和UI庫(kù),能為Windows Forms平臺(tái)創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
默認(rèn)情況下,通過在每個(gè)組中放入相同的值來形成數(shù)據(jù)組。盡管DevExpress WinForms網(wǎng)格提供了一些其他內(nèi)置算法,但有時(shí)您需要實(shí)現(xiàn)自己的邏輯,這是使用GridViewCustomColumnGroup事件完成的。在本文中您將了解如何處理此事件,以便更改數(shù)字列的數(shù)據(jù)分組邏輯,分組包含從0到99.99,然后從100到199.99等開始的值范圍。
獲取DevExpress WinForms v25.1正式版下載
DevExpress技術(shù)交流群11:749942875 歡迎一起進(jìn)群討論
當(dāng)您根據(jù)Order Sum列對(duì)網(wǎng)格數(shù)據(jù)進(jìn)行分組時(shí),默認(rèn)情況下,分組是基于該列中的唯一值形成的。
切換到設(shè)計(jì)時(shí),首先,通過將屬性設(shè)置為來啟用該列的自定義排序模式。
之后,選擇網(wǎng)格視圖并處理它的事件,要處理的列由事件的參數(shù)指定,事件處理程序?qū)尚信c和參數(shù)指定的值進(jìn)行比較。由于要將值組合成與百相對(duì)應(yīng)的組,因此將值除以100并比較結(jié)果。為了將大于1000的所有值放入同一組,處理程序假設(shè)如果結(jié)果都大于10,則結(jié)果相等。在這種情況下,參數(shù)被設(shè)置為0,其他值進(jìn)行標(biāo)準(zhǔn)比較。
事件的參數(shù)被設(shè)置為true,以防止在事件執(zhí)行后調(diào)用默認(rèn)的比較機(jī)制。
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); } }
為了更好地說明這段代碼是如何工作的,即使在對(duì)數(shù)據(jù)進(jìn)行分組時(shí),分組列值也應(yīng)該是可見的。要啟用此操作,展開并將選項(xiàng)設(shè)置為true。
現(xiàn)在運(yùn)行應(yīng)用程序并按Order Sum列對(duì)網(wǎng)格數(shù)據(jù)進(jìn)行分組,因此將行組合到指定的間隔中。但是組行在相應(yīng)的組中顯示第一個(gè)值,從而誤導(dǎo)最終用戶,這也是可以修復(fù)的。
返回到設(shè)計(jì)時(shí)并訂閱事件,檢查事件的和參數(shù)。第一個(gè)參數(shù)指定當(dāng)前正在處理的列,而第二個(gè)參數(shù)指示是否調(diào)用事件來自定義組行顯示文本,參數(shù) 返回當(dāng)前處理的組行。要更改組行的顯示文本,使用事件的參數(shù)。
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); } }
運(yùn)行應(yīng)用程序并再次按Order Sum列對(duì)數(shù)據(jù)進(jìn)行分組,組行現(xiàn)在將顯示正確標(biāo)識(shí)間隔的自定義文本。
慧都是?家?業(yè)數(shù)字化解決?案公司,專注于軟件、?油與?業(yè)領(lǐng)域,以深?的業(yè)務(wù)理解和?業(yè)經(jīng)驗(yàn),幫助企業(yè)實(shí)現(xiàn)智能化轉(zhuǎn)型與持續(xù)競(jìng)爭(zhēng)優(yōu)勢(shì)。
慧都科技是DevExpress的中國(guó)區(qū)的合作伙伴,DevExpress作為用戶界面領(lǐng)域的優(yōu)秀產(chǎn)品,幫助企業(yè)高效構(gòu)建權(quán)限管理、數(shù)據(jù)可視化(如網(wǎng)格/圖表/儀表盤)、跨平臺(tái)系統(tǒng)(WinForms/ASP.NET/.NET MAUI)及行業(yè)定制解決方案,加速開發(fā)并強(qiáng)化交互體驗(yàn)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)