在我的博客里面,很多Winform程序里面都用到了分頁處理,這樣可以不管是在直接訪問數(shù)據(jù)庫(kù)的場(chǎng)景還是使用網(wǎng)絡(luò)方式訪問WCF服務(wù)獲取數(shù)據(jù),都能獲得較好的效率,因此WInform程序里面的分頁控件的使用是很好的一個(gè)解決方式,它能夠快速獲取數(shù)據(jù),并將可能減少我們?cè)黾犹嗟拇a邏輯,實(shí)現(xiàn)簡(jiǎn)單、高效、統(tǒng)一的理念。本篇主要介紹如何在分頁的GridControl里面如何實(shí)現(xiàn)數(shù)據(jù)的統(tǒng)計(jì)功能。
一般情況下,分頁控件呈現(xiàn)分為兩種方式,一種需要有分頁碼的真正分頁處理,一種是不需要分頁處理,但是列表和功能基本保持一致的界面,其實(shí)這兩種情況都是對(duì)列表控件的進(jìn)一步封裝,以方便使用的目的。
有分頁底欄的控件界面:
無需分頁的,保持一致界面的控件效果。
這兩種方式,都是對(duì)GridControl控件的封裝,而且他們的使用步驟和屬性基本上保持一致。
使用代碼如下所示。
this.winGridView1.BestFitColumnWith = false;
this.winGridView1.AppendedMenu = this.contextMenuStrip1;
this.winGridView1.gridView1.DataSourceChanged += new EventHandler(gridView1_DataSourceChanged);
this.winGridView1.OnRefresh += new EventHandler(winGridView1_OnRefresh);
this.winGridView1.gridView1.CustomColumnDisplayText += new DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventHandler(gridView1_CustomColumnDisplayText);
this.winGridView1.gridView1.RowCellStyle += new DevExpress.XtraGrid.Views.Grid.RowCellStyleEventHandler(gridView1_RowCellStyle);
那么我們?nèi)绾卧诜猪摽丶幕A(chǔ)上增加統(tǒng)計(jì)功能呢,由于分頁控件的字段是根據(jù)配置自動(dòng)創(chuàng)建的,我們需要在創(chuàng)建后,數(shù)據(jù)綁定的時(shí)候,把它增加上去,這樣我們就可以實(shí)現(xiàn)數(shù)據(jù)的統(tǒng)計(jì)處理了,我們最終希望的統(tǒng)計(jì)效果是在底部統(tǒng)計(jì)欄目里面增加一些特殊的值的統(tǒng)計(jì)處理,界面如下所示,這個(gè)是我Winform開發(fā)框架里面,對(duì)于庫(kù)存查詢統(tǒng)計(jì)的一個(gè)案例,供參考。
上面的統(tǒng)計(jì)實(shí)現(xiàn)代碼如下所示。
/// <summary>
/// 常見匯總信息
/// </summary>
private void CreateSummary()
{
GridView gridView1 = this.winGridView1.gridView1;
if (gridView1 != null && gridView1.Columns.Count > 0)
{
gridView1.GroupSummary.Clear();
gridView1.OptionsView.ColumnAutoWidth = false;
gridView1.OptionsView.GroupFooterShowMode = DevExpress.XtraGrid.Views.Grid.GroupFooterShowMode.VisibleAlways;
gridView1.OptionsView.ShowFooter = true;
gridView1.OptionsView.ShowGroupedColumns = true;
gridView1.OptionsView.ShowGroupPanel = false;
DevExpress.XtraGrid.Columns.GridColumn IDColumn = gridView1.Columns["ID"];
IDColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] {
new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, "ID", "記錄數(shù):{0}")});
DevExpress.XtraGrid.Columns.GridColumn StockQuantityColumn = gridView1.Columns["STOCKQUANTITY"];
StockQuantityColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] {
new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, "STOCKQUANTITY", "庫(kù)存數(shù)量:{0}")});
DevExpress.XtraGrid.Columns.GridColumn StockAmountColumn = gridView1.Columns["STOCKAMOUNT"];
StockAmountColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] {
new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, "STOCKAMOUNT", "庫(kù)存金額:{0:C2}")});
}
}
這個(gè)函數(shù),我們可以在數(shù)據(jù)變化的時(shí)候,重新調(diào)用函數(shù)進(jìn)行統(tǒng)計(jì)設(shè)置即可,如下代碼所示。
private void gridView1_DataSourceChanged(object sender, EventArgs e)
{
if (this.winGridView1.gridView1.Columns.Count > 0 && this.winGridView1.gridView1.RowCount > 0)
{
//統(tǒng)一設(shè)置100寬度
foreach (DevExpress.XtraGrid.Columns.GridColumn column in this.winGridView1.gridView1.Columns)
{
column.Width = 100;
}
//可特殊設(shè)置特別的寬度
SetGridColumWidth("Note", 200);
SetGridColumWidth("ItemNo", 120);
SetGridColumWidth("ItemBigType", 120);
SetGridColumWidth("WareHouse", 120);
SetGridColumWidth("ID", 100);
SetGridColumWidth("StockQuantity", 120);
SetGridColumWidth("StockAmount", 160);
//ID,StockQuantity,Unit,Price
SetGridColumWidth("Unit", 80);
SetGridColumWidth("Price", 80);
}
CreateSummary();
}
以上就是基于DevExpress樣式的Winform分頁控件的基礎(chǔ)上實(shí)現(xiàn)的統(tǒng)計(jì)數(shù)據(jù)效果,希望對(duì)你使用有幫助。