devExpress 그리드 소계. 커스텀.
출처 : https://www.devexpress.com/Support/Center/Question/Details/T199505/showing-subtotals-in-a-gridview
namespace T199505 {
public partial class Form1 : DevExpress.XtraEditors.XtraForm {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
gridControl1.DataSource = CreateData();
gridView1.Columns["UOM"].Visible = false;
gridView1.CustomColumnDisplayText += gridView1_CustomColumnDisplayText;
gridView1.CustomSummaryCalculate += gridView1_CustomSummaryCalculate;
gridView1.Columns["Name"].Group();
GridGroupSummaryItem item = new GridGroupSummaryItem();
item.FieldName = "Quantity";
item.SummaryType = DevExpress.Data.SummaryItemType.Custom;
item.ShowInGroupColumnFooter = gridView1.Columns["Quantity"];
gridView1.GroupSummary.Add(item);
}
int totalValue = 0;
void gridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e) {
if (!e.IsGroupSummary)
return;
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
totalValue = 0;
else if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
totalValue += Convert.ToInt32(e.FieldValue);
else if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize) {
e.TotalValue = "Total = " + totalValue + " " + gridView1.GetRowCellValue(e.RowHandle, gridView1.Columns["UOM"]);
e.TotalValueReady = true;
}
}
void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) {
if (e.Column == gridView1.Columns["Quantity"])
e.DisplayText = e.Value + " " + gridView1.GetListSourceRowCellValue(e.ListSourceRowIndex, gridView1.Columns["UOM"]);
}
private DataTable CreateData() {
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Quantity", typeof(string));
dt.Columns.Add("UOM", typeof(string));
for (int i = 0; i < 5; i++) {
dt.Rows.Add(i, "Name" + i, 100 * (i + 1), "LBS");
dt.Rows.Add(i, "Name" + i, 100 * (i + 10), "LBS");
}
return dt;
}
}
}