在我們開發(fā)Winform界面的時(shí)候,有時(shí)候會(huì)遇到需要對(duì)一些字段進(jìn)行一些匯總的管理,如果在列表中能夠?qū)Ρ砀窳斜碇械膬?nèi)容進(jìn)行分組展示,將比較符合我們的預(yù)期,本篇隨筆介紹在Winform開發(fā)中如何利用DevExpress的GridView實(shí)現(xiàn)該功能。
1、準(zhǔn)備數(shù)據(jù)表和一些數(shù)據(jù)
我們來(lái)以ERP系統(tǒng)中的一個(gè)原料表格來(lái)介紹我們對(duì)表格數(shù)據(jù)匯總的處理,首先創(chuàng)建一個(gè)原料表用來(lái)測(cè)試,表的數(shù)據(jù)庫(kù)設(shè)計(jì)可以采用PowerDesigner等類似的建模工具設(shè)計(jì),如下所示。
通過(guò)預(yù)覽生成SQL的方式,我們可以生成對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)腳本,用于創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)庫(kù)表。
?生成對(duì)應(yīng)的數(shù)據(jù)表后,我們往里面填入一些測(cè)試的數(shù)據(jù),用于實(shí)際的測(cè)試處理。
我們準(zhǔn)備類別不同的數(shù)據(jù)寫入,為了方便測(cè)試,具體數(shù)據(jù)效果如下所示。
?有了這些,我們就可以順利進(jìn)行下面的代碼開發(fā)了。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-801205.html
2、基于具體框架生成基礎(chǔ)數(shù)據(jù)庫(kù)操作類
在這里可以根據(jù)我們實(shí)際的需要,生成相關(guān)的基礎(chǔ)數(shù)據(jù)庫(kù)操作類,如我的Winform框架或者SqlSugar 開發(fā)框架的Winform前端,都可以直接生成對(duì)應(yīng)的框架基礎(chǔ)代碼,我們這里以我們的SqlSugar 開發(fā)框架模式來(lái)開發(fā)對(duì)應(yīng)的Winform界面。
由于我們開發(fā)一般是基于增量式的開發(fā)方式,因此我們可以一次性選擇我們新增的表進(jìn)行生成底層框架的支持代碼,如下確定界面所示。
?最終生成一個(gè)可以直接運(yùn)行的項(xiàng)目整體框架方案。
?如果我們是考慮增量式的整合在我們現(xiàn)有的項(xiàng)目上,那么我們可以把SugarProjectCore項(xiàng)目目錄里面的文件夾整個(gè)復(fù)制整合到我們已有的項(xiàng)目上即可。
它們的目錄結(jié)構(gòu)已經(jīng)根據(jù)不同的功能放在了不同的文件夾中了,如下圖所示。
例如,我們把它們整個(gè)復(fù)制放置到了對(duì)應(yīng)項(xiàng)目目錄下,如下所示。
?那么目前我們已有項(xiàng)目上就增加了對(duì)應(yīng)的訪問(wèn)數(shù)據(jù)庫(kù)的業(yè)務(wù)類所需要的模型、接口、具體實(shí)現(xiàn)類了。
接下來(lái)就是對(duì)Winform的界面進(jìn)行生成了。
3、生成相關(guān)的界面,并實(shí)現(xiàn)分組的特殊處理
前面我們介紹了,這個(gè)案例介紹基于我們SqlSugar開發(fā)框架的實(shí)現(xiàn),因此我們基于SqlSugar開發(fā)框架的Winform界面進(jìn)行生成即可。生成的界面直接調(diào)用剛才的創(chuàng)建的基礎(chǔ)接口來(lái)請(qǐng)求數(shù)據(jù)和綁定處理,以及相關(guān)的導(dǎo)入導(dǎo)出、編輯、刪除等基礎(chǔ)操作。
上面的界面就是基于SqlSugar開發(fā)框架生成的Winform界面的時(shí)候,對(duì)界面中查詢條件、列表展示的字段,以及編輯界面的字段進(jìn)行設(shè)計(jì)的處理,代碼生成工具根據(jù)這些設(shè)定進(jìn)行界面代碼的生成。
生成的代碼,自動(dòng)包含了列表展示和編輯等基礎(chǔ)界面功能,如下代碼文件所示。
我們把這些文件整合到我們已有的UI項(xiàng)目上,就可以實(shí)現(xiàn)表的界面代碼增量的生成了。
直接測(cè)試編譯運(yùn)行,稍作調(diào)整,最終的界面效果如下所示。
?以上的表格數(shù)據(jù),只是常規(guī)的展示,并沒(méi)有實(shí)現(xiàn)分組的處理,我們?cè)黾右粋€(gè)復(fù)選框,用來(lái)設(shè)置分組處理的展示,如下界面所示。
我們注意到,在WInform界面中,生成的界面代碼包含了對(duì)數(shù)據(jù)的綁定顯示,如下就是對(duì)表的數(shù)據(jù)請(qǐng)求函數(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)建分頁(yè)的條件和查詢條件 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ù)界面的條件進(jìn)行數(shù)據(jù)的條件查詢,并返回記錄集合。
在獲得記錄集合后,我們把它賦值給我們自定義的分頁(yè)控件組件,就可以實(shí)現(xiàn)相關(guān)數(shù)據(jù)的正常展示了。
//獲取分頁(yè)數(shù)據(jù)列表 var result = await GetData(); //設(shè)置所有記錄數(shù)和列表數(shù)據(jù)源 this.winGridViewPager1.PagerInfo.RecordCount = result.TotalCount; //需先于DataSource的賦值,更新分頁(yè)信息 this.winGridViewPager1.DataSource = result.Items;
為了實(shí)現(xiàn)分組的處理展示,我們需要判斷上面的復(fù)選框條件,進(jìn)行分組條件和表達(dá)式的創(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;//對(duì)類別進(jìn)行分組展示 var item = new GridGroupSummaryItem(); item.FieldName = "Id"; item.DisplayFormat = " (合計(jì)數(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; }
以上就是對(duì)數(shù)據(jù)記錄進(jìn)行分組的代碼,核心代碼就幾行,可以很容易實(shí)現(xiàn)我們所需要的分組效果,如下界面所示。
?如果我們不需要合并,取消設(shè)置為false即可。
gridView1.OptionsView.AllowCellMerge = false;
以上就是我們介紹基于SqlSugar開發(fā)框架生成基礎(chǔ)代碼、界面代碼、以及實(shí)現(xiàn)分組處理展示的一些總結(jié)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-801205.html
?
到了這里,關(guān)于在Winform系統(tǒng)開發(fā)中,對(duì)表格列表中的內(nèi)容進(jìn)行分組展示的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!