轉(zhuǎn)帖|使用教程|編輯:龔雪|2024-03-22 11:24:09.507|閱讀 114 次
概述:本文主要介紹在Winform開發(fā)中如何利用DevExpress的GridView實現(xiàn)表格列表內(nèi)容分組展示,歡迎下載最新版工具體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在開發(fā)Winform界面的時會遇到需要對一些字段進行一些匯總的管理,如果在列表中能夠?qū)Ρ砀窳斜碇械膬?nèi)容進行分組展示,將比較符合預(yù)期,本文主要介紹在Winform開發(fā)中如何利用DevExpress的GridView實現(xiàn)該功能。
PS:給大家推薦一個C#開發(fā)可以用到的界面組件——DevExpress WinForms,它能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無論是Office風格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
DevExpress技術(shù)交流群9:909157416 歡迎一起進群討論
我們來以ERP系統(tǒng)中的一個原料表格來介紹對表格數(shù)據(jù)匯總的處理,首先創(chuàng)建一個原料表用來測試,表的數(shù)據(jù)庫設(shè)計可以采用PowerDesigner等類似的建模工具設(shè)計,如下所示。
通過預(yù)覽生成SQL的方式,我們可以生成對應(yīng)不同的數(shù)據(jù)庫的數(shù)據(jù)庫腳本,用于創(chuàng)建對應(yīng)的數(shù)據(jù)庫表。
生成對應(yīng)的數(shù)據(jù)表后,我們往里面填入一些測試的數(shù)據(jù),用于實際的測試處理。
我們準備類別不同的數(shù)據(jù)寫入,為了方便測試,具體數(shù)據(jù)效果如下所示。
有了這些,我們就可以順利進行下面的代碼開發(fā)了。
在這里可以根據(jù)實際的需要,生成相關(guān)的基礎(chǔ)數(shù)據(jù)庫操作類,如Winform框架或者SqlSugar 開發(fā)框架的Winform前端,都可以直接生成對應(yīng)的框架基礎(chǔ)代碼,這里以我們的SqlSugar 開發(fā)框架模式來開發(fā)對應(yīng)的Winform界面。
由于我們開發(fā)一般是基于增量式的開發(fā)方式,因此可以一次性選擇新增的表進行生成底層框架的支持代碼,如下確定界面所示。
最終生成一個可以直接運行的項目整體框架方案。
如果我們是考慮增量式的整合在現(xiàn)有的項目上,那么可以把SugarProjectCore項目目錄里面的文件夾整個復(fù)制整合到已有的項目上即可。
它們的目錄結(jié)構(gòu)已經(jīng)根據(jù)不同的功能放在了不同的文件夾中了,如下圖所示。
例如,我們把它們整個復(fù)制放置到了對應(yīng)項目目錄下,如下所示。
那么目前我們已有項目上就增加了對應(yīng)的訪問數(shù)據(jù)庫的業(yè)務(wù)類所需要的模型、接口、具體實現(xiàn)類了。
接下來就是對Winform的界面進行生成了。
前面我們介紹了,這個案例介紹基于SqlSugar開發(fā)框架的實現(xiàn),因此基于SqlSugar開發(fā)框架的Winform界面進行生成即可。生成的界面直接調(diào)用剛才的創(chuàng)建的基礎(chǔ)接口來請求數(shù)據(jù)和綁定處理,以及相關(guān)的導(dǎo)入導(dǎo)出、編輯、刪除等基礎(chǔ)操作。
上面的界面就是基于SqlSugar開發(fā)框架生成的Winform界面的時候,對界面中查詢條件、列表展示的字段,以及編輯界面的字段進行設(shè)計的處理,代碼生成工具根據(jù)這些設(shè)定進行界面代碼的生成。
生成的代碼,自動包含了列表展示和編輯等基礎(chǔ)界面功能,如下代碼文件所示。
我們把這些文件整合到已有的UI項目上,就可以實現(xiàn)表的界面代碼增量的生成了。
直接測試編譯運行,稍作調(diào)整,最終的界面效果如下所示。
以上的表格數(shù)據(jù),只是常規(guī)的展示,并沒有實現(xiàn)分組的處理,我們增加一個復(fù)選框,用來設(shè)置分組處理的展示,如下界面所示。
在WInform界面中,生成的界面代碼包含了對數(shù)據(jù)的綁定顯示,如下就是對表的數(shù)據(jù)請求函數(shù)。
/// <summary> /// 獲取數(shù)據(jù) /// </summary> /// <returns></returns> private async Task<IPagedResult<MaterialInfo>> GetData() { MaterialPagedDto pagerDto = null; if (advanceCondition != null) { pagerDto = new MaterialPagedDto(this.winGridViewPager1.PagerInfo); pagerDto = dlg.GetPagedResult(pagerDto); } else { //構(gòu)建分頁的條件和查詢條件 pagerDto = new MaterialPagedDto(this.winGridViewPager1.PagerInfo) { //添加所需條件 Category = this.txtCategory.Text.Trim(), Code = this.txtCode.Text.Trim(), Name = this.txtName.Text.Trim(), Alias = this.txtAlias.Text.Trim(), UsePurpose = this.txtUsePurpose.Text.Trim(), SupplierSimple = this.txtSupplierSimple.Text.Trim(), Producer = this.txtProducer.Text.Trim(), }; //日期和數(shù)值范圍定義 } var result = await BLLFactory<IMaterialService>.Instance.GetListAsync(pagerDto); return result; }
以上就是根據(jù)界面的條件進行數(shù)據(jù)的條件查詢,并返回記錄集合。
在獲得記錄集合后,我們把它賦值給自定義的分頁控件組件,就可以實現(xiàn)相關(guān)數(shù)據(jù)的正常展示了。
//獲取分頁數(shù)據(jù)列表 var result = await GetData(); //設(shè)置所有記錄數(shù)和列表數(shù)據(jù)源 this.winGridViewPager1.PagerInfo.RecordCount = result.TotalCount; //需先于DataSource的賦值,更新分頁信息 this.winGridViewPager1.DataSource = result.Items;
為了實現(xiàn)分組的處理展示,我們需要判斷上面的復(fù)選框條件,進行分組條件和表達式的創(chuàng)建處理即可,如下代碼所示。
//增加匯總字段和顯示 var gridView1 = this.winGridViewPager1.gridView1; if (checkGroup.Checked) { this.winGridViewPager1.ShowLineNumber = false; gridView1.IndicatorWidth = 0; gridView1.OptionsView.ShowGroupExpandCollapseButtons = true;//顯示折疊的分組 gridView1.OptionsView.AllowCellMerge = true; //允許合并字段 gridView1.OptionsView.GroupDrawMode = GroupDrawMode.Standard; gridView1.GroupSummary.Clear(); gridView1.Columns["Category"].GroupIndex = 0;//對類別進行分組展示 var item = new GridGroupSummaryItem(); item.FieldName = "Id"; item.DisplayFormat = " (合計數(shù)量 = {0:n})"; item.SummaryType = DevExpress.Data.SummaryItemType.Count;//Sum、Average等 gridView1.GroupSummary.Add(item); gridView1.ExpandAllGroups(); } else { gridView1.GroupSummary.Clear(); this.winGridViewPager1.ShowLineNumber = true; gridView1.OptionsView.AllowCellMerge = false; }
以上就是對數(shù)據(jù)記錄進行分組的代碼,核心代碼就幾行,可以很容易實現(xiàn)我們所需要的分組效果,如下界面所示。
如果我們不需要合并,取消設(shè)置為false即可。
gridView1.OptionsView.AllowCellMerge = false;
以上就是我們介紹基于SqlSugar開發(fā)框架生成基礎(chǔ)代碼、界面代碼、以及實現(xiàn)分組處理展示的一些總結(jié)。
本文轉(zhuǎn)載自:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn