1-) C# RMOS - gridview custom group calculate custom footer sum
ramborambo s2
kaynak kod : https://drive.google.com/file/d/14I7edI2wmsF-QV2GE2QhbhjmIWDPBHrn/view?usp=sharing
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
namespace gridsummary
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
listele();
}
public void listele()
{
gridView1.OptionsView.ShowFooter = true;
gridView1.OptionsView.ShowAutoFilterRow = true;
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("ad", typeof(string));
dt.Columns.Add("ucret1", typeof(double));
dt.Columns.Add("ucret2", typeof(double));
dt.Columns.Add("ucret3", typeof(double));
double ucret1 = 7.5, ucret2 = 5.5;
for (int i = 0; i < 40; i++)
{
if (i < 10)
{
ucret1 = ucret1 + i;
ucret2 = ucret2 + i;
dt.Rows.Add(i, "ramazan", ucret1, ucret2, ucret1 / ucret2); //
}
else if (i < 15)
{
ucret1 = ucret1 + i;
ucret2 = ucret2 + i;
dt.Rows.Add(i, "reşat", ucret1, ucret2, ucret1 / ucret2);
}
else
{
ucret1 = ucret1 + i;
ucret2 = ucret2 + i;
dt.Rows.Add(i, "mehmet", ucret1, ucret2, ucret1 / ucret2);
}
}
gridControl1.DataSource = dt;
gridviewFooterYaz(gridView1, "ucret1");
gridviewFooterYaz(gridView1, "ucret2");
gridviewGroupFooterYaz(gridView1, "ucret1");
gridviewGroupFooterYaz(gridView1, "ucret2");
gridviewGroupCustomFooterYaz(gridView1, "ucret3");
}
public static void gridviewFooterYaz(GridView grid, string fieldName)
{
if (grid.Columns.Count > 0)
{
grid.OptionsView.ShowFooter = true;
grid.Columns[fieldName].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;
grid.Columns[fieldName].SummaryItem.FieldName = fieldName;
grid.Columns[fieldName].SummaryItem.DisplayFormat = "{0:n0}";
}
}
public static void gridviewGroupFooterYaz(GridView grid, string fieldName)
{
if (grid.Columns.Count > 0)
{
GridGroupSummaryItem item1 = new GridGroupSummaryItem();
item1.FieldName = fieldName;
item1.SummaryType = DevExpress.Data.SummaryItemType.Sum;
item1.DisplayFormat = "Total {0:c2}";
item1.ShowInGroupColumnFooter = grid.Columns[fieldName];
grid.GroupSummary.Add(item1);
}
}
public static void gridviewGroupCustomFooterYaz(GridView grid, string fieldName)
{
if (grid.Columns.Count > 0)
{
GridGroupSummaryItem item1 = new GridGroupSummaryItem();
item1.FieldName = fieldName;
item1.SummaryType = DevExpress.Data.SummaryItemType.Custom;
//item1.DisplayFormat = "Total {0:c2}";
item1.ShowInGroupColumnFooter = grid.Columns[fieldName];
grid.GroupSummary.Add(item1);
grid.Columns["ucret3"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Custom;
}
}
private void Form1_Load(object sender, EventArgs e)
{
listele();
}
int sayac = 0;
List<double> groupTotal = new List<double>();
int diger = 1;
private void gridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)
{
if (diger > e.GroupRowHandle * -1)
{
groupTotal = new List<double>();
sayac = 0;
diger = 1;
}
diger = e.GroupRowHandle * -1;
if (!e.IsGroupSummary)
{
if ((((DevExpress.XtraGrid.GridSummaryItem)e.Item).FieldName) == "ucret3")
{
e.TotalValue =
Convert.ToDouble(gridView1.Columns["ucret1"].SummaryItem.SummaryValue) /
Convert.ToDouble(gridView1.Columns["ucret2"].SummaryItem.SummaryValue);
}
}
else
{
if ((((DevExpress.XtraGrid.GridSummaryItem)e.Item).FieldName) == "ucret3")
{
double val1 = Convert.ToDouble(gridView1.GetGroupSummaryValue(e.RowHandle, gridView1.GroupSummary[0] as GridGroupSummaryItem));
double val2 = Convert.ToDouble(gridView1.GetGroupSummaryValue(e.RowHandle, gridView1.GroupSummary[1] as GridGroupSummaryItem));
if (val1 != 0 && val2 != 0)
{
double sonuc = val1 / val2;
groupTotal.Add(sonuc);
}
if (groupTotal.Count > (e.GroupRowHandle * -1) - 1)
{
e.TotalValue = groupTotal[(e.GroupRowHandle * -1) - 1];
}
//sayac++;
//Console.WriteLine(e.RowHandle + "**" + e.GroupRowHandle + "**" + val1 + "**" + val2+"**"+sayac);
}
}
}
}
}