- [DEVEXPRESS] Chia sẻ source code cách tạo biểu đồ sơ đồ tổ chức công ty Org Chart trên Winform C#
- [C#] Hướng dẫn tạo Auto Number trên Datagridview winform
- [DATABASE] Hướng dẫn tạo Procedure String Split in Mysql
- [C#] Thiết lập dấu (,) hay dấu (.) ở định dạng số đúng với định dạng số Việt Nam
- [C#] Chia sẻ source code Game Spin Lucky Wheel
- [C#] Hướng dẫn Encode and Decode HTML
- Hướng dẫn tạo tài khoản Chat Open AI GPT tại Việt Nam
- [C#] Hướng dẫn thay đổi giao diện ứng dụng Winform theo giao diện của Windows
- [VB.NET] Hiệu ứng Acrylic, Mica, Tabbed Blur Effect trên Winform
- [DEVEXPRESS] Hướng dẫn sử dụng HTML Template trên Combobox Edit
- [C#] Chia sẻ source code Orange Rain in Winform
- [DEVEXPRESS] Hướng dẫn sử dụng HTML Template trên XtraMessageBox Winform Devexpress 22.2.3
- [DEVEXPRESS] Hướng dẫn sử dụng HTML and CSS Code Viewer trên Winform
- [C#] Number Effect Counter up and down in winform
- [C#] Hướng dẫn Supend and Resume Process ID in Winform
- [C#] Hiển thị line number trên Richtextbox Winform
- [C#] Fake Blue Screen BSOD in winform
- [C#] Chia sẽ code demo sử dụng Async Parallel Foreach and For in Winform
- [C#] Sử dụng ActionBlock run X task at time winform
- [C#] Hướng dẫn sử dụng Property Grid để lưu và tải lại thông tin cấu hình user trên winform
[DEVEXPRESS] Hướng dẫn Custom Summary in Footer trong Gridview C#
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#:
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!