NEWS

[DEVEXPRESS] Hướng dẫn Custom Summary in Footer trong Gridview C#

[DEVEXPRESS] Hướng dẫn Custom Summary in Footer trong Gridview C#
Đăng bởi: Thảo Meo - Lượt xem: 2894 09:30:58, 11/08/2022C#   In bài viết

Xin chào các bạn trẻ, bài viết hôm nay mình sẻ tiếp tục hướng dẫn các bạn cách Custom Summary trên Footer Gridview Devexpress C#, Winform.

[DEVEXPRESS] How to custom Summary Fotter Gridview C#

Giao diện demo ứng dụng Gridview Summary C#:

custom_summary_gridview

Bình thường, trên summary của Gridview có hỗ trợ cho chúng ta các hàm cơ bản như: Sum, min, max, average...

Và cái cuối cùng là custom, để chúng ta có thể sử dụng phương thức tính toán theo ý của mình.

Ở hình ảnh demo ở trên, mình sẽ tính trung bình tuổi và chỉ tính trung bình tuổi của những nhân viên Employee nào có giới tính là Nam

Full source code C#:

using DevExpress.Data;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Grid;
using EmployeeDataExample;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CustomSummaryGridview
{
    public partial class Form1 : DevExpress.XtraEditors.XtraForm
    {
        public Form1()
        {
            InitializeComponent();

        }
        private async void Form1_Load(object sender, EventArgs e)
        {
            var employeeData = new EmployeeData();
            var dataEmployees = await employeeData.GetEmployeesAsync();
            gridControl1.DataSource = dataEmployees;

            double averageAgeEmployee = 0;
            int countEmployee = 0;
            gridView1.CustomSummaryCalculate += (ss, ee) =>
            {
                GridView view = ss as GridView;
                if (ee.IsTotalSummary && (ee.Item as GridSummaryItem).FieldName == "Age")
                {
                    GridSummaryItem item = ee.Item as GridSummaryItem;
                    if (item.FieldName == "Age")
                    {
                        switch (ee.SummaryProcess)
                        {
                            case CustomSummaryProcess.Start:
                                averageAgeEmployee = 0;
                                countEmployee = 0;
                                break;
                            case CustomSummaryProcess.Calculate:
                                var gender = view.GetRowCellValue(ee.RowHandle, "Gender").ToString();
                                if (gender == "Nam")
                                {
                                    ++countEmployee;
                                    averageAgeEmployee += Convert.ToDouble(ee.FieldValue);
                                }
                                break;
                            case CustomSummaryProcess.Finalize:
                                if (countEmployee == 0)
                                {
                                    ee.TotalValue = 0;
                                }
                                
                                else {
                                    ee.TotalValue = (averageAgeEmployee / countEmployee);
                                }
                                
                                break;
                        }
                    }
                }
            };

            gridView1.OptionsView.ShowFooter = true;
            GridColumn column = gridView1.Columns.Where(x => x.FieldName == "Age").FirstOrDefault();
            column.SummaryItem.SummaryType = SummaryItemType.Custom;
            column.SummaryItem.DisplayFormat = "Tuổi Trung Bình: {0:#,###.##}";
            //RepositoryItemCheckEdit edit = gridView1.Columns["Mark"].RealColumnEdit as RepositoryItemCheckEdit;
            //edit.EditValueChanged += (sender, e) => {
            //    //Post an editor's value to a data source
            //    gridView1.PostEditor();
            //    //Force calculation of the total summary
            //    gridView1.UpdateTotalSummary();
            //};
            gridView1.ColumnFilterChanged += GridView1_ColumnFilterChanged;
        }

        private void GridView1_ColumnFilterChanged(object sender, EventArgs e)
        {
            gridView1.UpdateTotalSummary();
        }
    }
}

Thanks for watching!

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[DEVEXPRESS] Hướng dẫn Custom Summary in Footer trong Gridview C#
Đăng bởi: Thảo Meo - Lượt xem: 2894 09:30:58, 11/08/2022C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.