如何Windows分頁控件中增加統(tǒng)計(jì)功能

在我的博客里面,很多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ì)你使用有幫助。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容