DevExpress WinForms中文教程:Grouping(分組)- 如何自定義分組算法?

DevExpress WinForms擁有180+組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!

DevExpress WinForms中文使用教程圖集

默認情況下,通過在每個組中放入相同的值來形成數據組。盡管DevExpress WinForms網格提供了一些其他內置算法,但有時您需要實現自己的邏輯,這是使用GridViewCustomColumnGroup事件完成的。在本文中您將了解如何處理此事件,以便更改數字列的數據分組邏輯,分組包含從0到99.99,然后從100到199.99等開始的值范圍。

獲取DevExpress WinForms v25.1正式版下載

默認操作

當您根據Order Sum列對網格數據進行分組時,默認情況下,分組是基于該列中的唯一值形成的。

DevExpress WinForms中文使用教程圖集

實現自定義分組邏輯

切換到設計時,首先,通過將GridColumn.SortMode屬性設置為ColumnSortMode.Custom來啟用該列的自定義排序模式。

DevExpress WinForms中文使用教程圖集

之后,選擇網格視圖并處理它的GridView.CustomColumnGroup事件,要處理的列由事件的CustomColumnSortEventArgs.Column參數指定,事件處理程序將兩行與CustomColumnSortEventArgs.Value1和CustomColumnSortEventArgs.Value2參數指定的值進行比較。由于要將值組合成與百相對應的組,因此將值除以100并比較結果。為了將大于1000的所有值放入同一組,處理程序假設如果結果都大于10,則結果相等。在這種情況下,CustomColumnSortEventArgs.Result參數被設置為0,其他值進行標準比較。

事件的CustomColumnSortEventArgs.Handled參數被設置為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);
}
}

為了更好地說明這段代碼是如何工作的,即使在對數據進行分組時,分組列值也應該是可見的。要啟用此操作,展開GridView.OptionsView并將GridOptionsView.ShowGroupedColumns選項設置為true。

DevExpress WinForms中文使用教程圖集

現在運行應用程序并按Order Sum列對網格數據進行分組,因此將行組合到指定的間隔中。但是組行在相應的組中顯示第一個值,從而誤導最終用戶,這也是可以修復的。

DevExpress WinForms中文使用教程圖集

為組行提供自定義顯示文本

返回到設計時并訂閱ColumnView.CustomColumnDisplayText事件,檢查事件的CustomColumnDisplayTextEventArgs.Column和CustomColumnDisplayTextEventArgs.IsForGroupRow參數。第一個參數指定當前正在處理的列,而第二個參數指示是否調用事件來自定義組行顯示文本,參數CustomColumnDisplayTextEventArgs.GroupRowHandle?返回當前處理的組行。要更改組行的顯示文本,使用事件的CustomColumnDisplayTextEventArgs.DisplayText參數。

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 WinForms中文使用教程圖集


更多DevExpress線上公開課、中文教程資訊請上中文網獲取

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92737.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92737.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92737.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP 與 Vue.js 結合的前后端分離架構

PHP 與 Vue.js 結合是構建現代 Web 應用的流行技術棧,通常采用 前后端分離架構。以下是關鍵要點和推薦實現方案: 一、技術棧組合 角色技術選項后端 (PHP)Laravel (推薦)、Symfony、CodeIgniter前端 (Vue)Vue 2/3、Vue Router、Pinia/Vuex、Vite通信協議…

XML高效處理類 - 專為Office文檔XML處理優化

/**** 提供XML讀取、寫入、修改、查詢等高級功能,支持命名空間和復雜XML結構* * 主要功能:* 1. 復雜路徑解析(支持屬性篩選、索引、通配符)* 2. 完整節點類型支持(元素、文本、CDATA、注釋、PI)* 3. 高效元…

星慈光編程蟲2號小車講解第一篇--向前向后

星慈光編程蟲2號小車是一款基于微控制器(如Arduino)的編程教學小車,常用于學習機器人控制和編程基礎。本講解將重點介紹小車的基本運動:前進、后退、左轉和右轉。這些運動通過控制電機實現,通常涉及調整電機的方向和速…

iOS 加固工具有哪些?快速發布團隊的實戰方案

在當今快速迭代的 iOS 開發環境中,團隊需要在高頻上線與應用安全之間找到平衡。快速發布不應犧牲安全性,而安全加固也不應成為阻礙上線的瓶頸。這就要求開發者在加固工具的選型與流程設計上,做到既高效又可靠。 那么,iOS 加固工具…

結構型模式-架構解耦與擴展實踐

結構型模式聚焦于對象間的組合關系,通過優化類與對象的裝配方式,實現系統的靈活性與可擴展性。在分布式系統中,由于多節點協作、跨網絡通信及異構環境集成等特性,傳統結構型模式需進行適應性改造,以應對分布式特有的復…

scratch筆記和練習-第三課

角色的大小變化 亮度等特效設置 流程圖圖形符號 Figma攻略:26個流行流程圖符號及其解釋 練習 實現在閃動10次后角色緩緩變回原形

Redis MCP 安裝與配置完整指南

一、Redis MCP 簡介 Redis MCP (Managed Control Plane) 是一個獨立于 Redis 服務運行的管理控制平臺,用戶可通過該平臺快速高效地管理和配置 Redis 實例。Redis MCP 可配合開源 Redis 或 Redis Cloud 使用。 二、安裝 Redis MCP 服務 Redis MCP 提供多種安裝方式&a…

Spring Boot配置文件加載全指南:從基礎到Spring Cloud集成

??? ??一、核心概念? 配置文件默認存在加載順序優先級主要用途必需依賴bootstrap.yml? 無1(最先)最高Spring Cloud上下文初始化spring-cloud-starter-bootstrapbootstrap.properties? 無1(略高于.yml)最高同上同上application.yml? 自動創建2中等應用核心配置無appl…

Python通關秘籍(六)數據結構——字典

前文復習 五、數據結構 5.1 列表(List) 列表是一種有序的可變數據集合,可以包含不同類型的元素。

自學嵌入式 day33 TCP、HTTP協議(超文本傳輸協議)

6、黏包問題(1)、原因:發送方發送數據太快或者接收方接收數據太慢,導致數據在緩沖區緩存。(2)、解決方法:①發送指定大小數據(結構體)問題:結構體對齊問題&am…

LinuxShell 的 Here-Document(<< EOF) 筆記250723

LinuxShell 的 Here-Document(<< EOF) 筆記250723 Here-Document(<< EOF) Linux Shell Here Document (<< EOF) 終極指南 Here Document&#xff08;立即文檔&#xff09;是 Shell 中用于多行輸入重定向的強大功能&#xff0c;其核心語法為 << DELI…

【windows修復】解決windows10,沒有【相機] 功能問題

問題: windows10,相機模塊,好像是被卸載了,想重新安裝 方法簡介: 先下載windows store, 然后,在windows store 里面下載 相機功能: 解決: 直接下載官方離線包并手動安裝(成功率 90%+) 1 用瀏覽器打開 https://store.rg-adguard.net 這是微軟 CDN 解析站,安…

Python 中字典和 if-else 的選擇

一、為什么要寫這篇文章&#xff1f; 在 Python 編程中&#xff0c;我們經常需要根據不同的條件做不同的事情。比如&#xff1a; 根據用戶等級顯示不同的內容根據成績給出不同的評價根據天氣決定穿什么衣服 這時候&#xff0c;我們通常有兩種選擇&#xff1a; 用 if-else 語句用…

【開源解析】基于HTML5的智能會議室預約系統開發全攻略:從零構建企業級管理平臺

&#x1f680; 【開源解析】基于HTML5的智能會議室預約系統開發全攻略&#xff1a;從零構建企業級管理平臺 &#x1f308; 個人主頁&#xff1a;創客白澤 - CSDN博客 &#x1f4a1; 熱愛不止于代碼&#xff0c;熱情源自每一個靈感閃現的夜晚。愿以開源之火&#xff0c;點亮前行…

中央廣播電視總臺聯合阿里云研究院權威發布《中國人工智能應用發展報告(2025)》:我國依舊需要大力注重人工智能人才的培養

你好&#xff0c;我是杰哥。 中央廣播電視總臺聯合阿里云研究院權威發布《中國人工智能應用發展報告&#xff08;2025&#xff09;》&#xff0c;以下為報告核心看點&#xff1a; 報告首提 “654”體系&#xff1a;揭秘 6大技術趨勢、5 新應用場景、4 力產業模型&#xff1b;成…

Visual Studio 2010-.Net Framework 4.0-DevExpress安裝

最新版的DevExpress已不支持.Net Framework 4.0&#xff0c;需要下載18.1及以下版本。 17.2.5版DevExpress下載&#xff1a; 百度網盤 請輸入提取碼

借助Aspose.HTML控件,在 Python 中將 HTML 轉換為 Markdown

在這個人工智能時代&#xff0c;Markdown因其易用性而備受重視。這種標記語言易于人類和機器理解。此外&#xff0c;與 HTML 和 DOCX 相比&#xff0c;這種格式更有助于法學碩士 (LLM) 理解文檔結構。因此&#xff0c;本指南將介紹如何以 Python 編程方式將HTML轉換為 Markdown…

【2026版】Redis面試題

文章目錄1. Redis為什么這么快&#xff1f;2. Redis的持久化機制是怎樣的&#xff1f;3. Redis 的過期策略是怎么樣的&#xff1f;4. Redis的內存淘汰策略是怎么樣的&#xff1f;5. 什么是熱Key問題&#xff0c;如何解決熱key問題&#xff1f;6. 什么是大Key問題&#xff0c;如…

Python編程進階知識之第四課處理數據(pandas)

目錄 簡介 1. 安裝 Pandas 2.基本數據結構 1.Series &#xff08;1.&#xff09;創建Series &#xff08;2.&#xff09;Series的屬性 &#xff08;3.&#xff09;Series 的索引和切片 2.DataFrame &#xff08;1.&#xff09;創建 DataFrame &#xff08;2.&#xff09;…

使用 Vue 實現移動端視頻錄制與自動截圖功能

文章目錄技術棧功能介紹video標簽屬性完整代碼js 前端實現將視頻Blob轉Base64java 后端實現將視頻Base64轉mp4文件在移動端網頁開發中&#xff0c;使用攝像頭錄制視頻并自動生成截圖是一個常見的需求&#xff0c;比如身份認證、人臉識別或互動問卷等場景。本文將介紹如何使用 V…