🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# RMOS / GridView1_CustomSummaryCalculate gridview custom group calculate custom footer sum 2

1-) C# RMOS - GridView1_CustomSummaryCalculate gridview custom group calculate custom footer sum 2

 

açıklama : bu projede grouplama ve her gruba ait sum'ları bulmayı öğrenirsin. ayrıca bu sumları bir birine bölerek farklı grubun sum'ına yazmayı

proje linki google drive şifre(123) : https://drive.google.com/file/d/1gjKKXlGyqIzdduaKoaZggVKHCBCLpBfK/view?usp=sharing

 

 

 

using DevExpress.XtraGrid;

using Newtonsoft.Json;

using System;

using System.Data;

using System.IO;

using System.Windows.Forms;

namespace OrnekData

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        // ornekdata.json https://drive.google.com/file/d/178xB5gCfA8HS4RLEcar2lfc2izWfC64p/view?usp=sharing

        private void Form1_Load(object sender, EventArgs e)

        {

            string path = "ornekdata.json";

            string jsonText = File.ReadAllText(path);

            DataTable dataTable = JsonConvert.DeserializeObject<DataTable>(jsonText);

            gridControl1.DataSource = dataTable;

            gridView1.Columns["Rez_Mus_tipi"].Group();

            gridView1.CustomSummaryCalculate += GridView1_CustomSummaryCalculate;

            gridView1.OptionsView.ShowFooter = true;

            // Rez_Mus_tipi Ort_Pansiyon_kdvsiz Pansiyon_Kdvsiz Oda_1 ve Ort_Oda_kdvsiz Oda_kdvsiz Oda_1 bu kolanlar hariç columnları gizle

            foreach (DevExpress.XtraGrid.Columns.GridColumn column in gridView1.Columns)

            {

                if (column.FieldName != "Rez_Mus_tipi" && column.FieldName != "Ort_Pansiyon_kdvsiz" &&

                    column.FieldName != "Pansiyon_Kdvsiz" && column.FieldName != "Oda_1" &&

                    column.FieldName != "Ort_Oda_kdvsiz" && column.FieldName != "Oda_kdvsiz")

                {

                    column.Visible = false;

                }

            }

            // Standart özet öğeleri ekle

            AddSummaryItem("Pansiyon_Kdvsiz");

            AddSummaryItem("Oda_1");

            AddSummaryItem("Oda_kdvsiz");

            // Ort_Pansiyon_kdvsiz için özel özet öğesi ekle

            // Özel özet öğeleri (custom) ekliyoruz

            AddCustomSummaryItem("Ort_Pansiyon_kdvsiz");

            AddCustomSummaryItem("Ort_Oda_kdvsiz");

            CalculateSummaryValues();

        }

        private void simpleButton1_Click(object sender, EventArgs e)

        {

            string path = "ornekdata.json";

            string jsonText = File.ReadAllText(path);

            DataTable dataTable = JsonConvert.DeserializeObject<DataTable>(jsonText);

            gridControl1.DataSource = dataTable;

            CalculateSummaryValues();

        }

        private void CalculateSummaryValues()

        {

            decimal totalPansiyonKdvsiz = 0;

            decimal totalOda1ForPansiyon = 0;

            decimal totalOdaKdvsiz = 0;

            decimal totalOda1ForOda = 0;

            // Değerleri manuel olarak toplamak için döngü

            for (int i = 0; i < gridView1.DataRowCount; i++)

            {

                totalPansiyonKdvsiz += Convert.ToDecimal(gridView1.GetRowCellValue(i, "Pansiyon_Kdvsiz") ?? 0);

                totalOda1ForPansiyon += Convert.ToDecimal(gridView1.GetRowCellValue(i, "Oda_1") ?? 0);

                totalOdaKdvsiz += Convert.ToDecimal(gridView1.GetRowCellValue(i, "Oda_kdvsiz") ?? 0);

                totalOda1ForOda += Convert.ToDecimal(gridView1.GetRowCellValue(i, "Oda_1") ?? 0);

            }

            // Ort_Pansiyon_kdvsiz hesaplaması

            decimal ortPansiyonKdvsiz = totalOda1ForPansiyon != 0 ? totalPansiyonKdvsiz / totalOda1ForPansiyon : 0;

            // Ort_Oda_kdvsiz hesaplaması

            decimal ortOdaKdvsiz = totalOda1ForOda != 0 ? totalOdaKdvsiz / totalOda1ForOda : 0;

            // Özet değerlerini footer'da gösterin

            gridView1.Columns["Ort_Pansiyon_kdvsiz"].SummaryItem.SetSummary(DevExpress.Data.SummaryItemType.Custom, ortPansiyonKdvsiz.ToString("n2"));

            gridView1.Columns["Ort_Oda_kdvsiz"].SummaryItem.SetSummary(DevExpress.Data.SummaryItemType.Custom, ortOdaKdvsiz.ToString("n2"));

        }

        private void GridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)

        {

            if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize && e.IsGroupSummary)

            {

                // Ort_Pansiyon_kdvsiz hesaplama

                if (((DevExpress.XtraGrid.GridSummaryItem)e.Item).FieldName == "Ort_Pansiyon_kdvsiz")

                {

                    double totalPansiyonKdvsiz = 0;

                    double totalOda1 = 0;

                    // Grup satırlarını ve veri satırlarını manuel olarak toplayarak ilgili gruba ait değerleri buluyoruz

                    for (int i = 0; i < gridView1.DataRowCount; i++)

                    {

                        // Sadece ilgili gruptaki satırları alıyoruz

                        if (gridView1.GetRowCellValue(i, "Rez_Mus_tipi").ToString() == gridView1.GetRowCellValue(e.RowHandle, "Rez_Mus_tipi").ToString())

                        {

                            totalPansiyonKdvsiz += Convert.ToDouble(gridView1.GetRowCellValue(i, "Pansiyon_Kdvsiz") ?? 0);

                            totalOda1 += Convert.ToDouble(gridView1.GetRowCellValue(i, "Oda_1") ?? 0);

                        }

                    }

                    // Bölme işlemi için oda1'in sıfır olmadığından emin oluyoruz

                    e.TotalValue = totalOda1 != 0 ? totalPansiyonKdvsiz / totalOda1 : 0;

                }

                // Ort_Oda_kdvsiz hesaplama

                else if (((DevExpress.XtraGrid.GridSummaryItem)e.Item).FieldName == "Ort_Oda_kdvsiz")

                {

                    double totalOdaKdvsiz = 0;

                    double totalOda1 = 0;

                    // Grup satırlarını ve veri satırlarını manuel olarak toplayarak ilgili gruba ait değerleri buluyoruz

                    for (int i = 0; i < gridView1.DataRowCount; i++)

                    {

                        // Sadece ilgili gruptaki satırları alıyoruz

                        if (gridView1.GetRowCellValue(i, "Rez_Mus_tipi").ToString() == gridView1.GetRowCellValue(e.RowHandle, "Rez_Mus_tipi").ToString())

                        {

                            totalOdaKdvsiz += Convert.ToDouble(gridView1.GetRowCellValue(i, "Oda_kdvsiz") ?? 0);

                            totalOda1 += Convert.ToDouble(gridView1.GetRowCellValue(i, "Oda_1") ?? 0);

                        }

                    }

                    // Bölme işlemi için oda1'in sıfır olmadığından emin oluyoruz

                    e.TotalValue = totalOda1 != 0 ? totalOdaKdvsiz / totalOda1 : 0;

                }

            }

        }

        private void AddSummaryItem(string fieldName)

        {

            GridGroupSummaryItem summaryItem = new GridGroupSummaryItem

            {

                FieldName = fieldName,

                SummaryType = DevExpress.Data.SummaryItemType.Sum,

                DisplayFormat = "{0:n2}",

                ShowInGroupColumnFooter = gridView1.Columns[fieldName]

            };

            gridView1.GroupSummary.Add(summaryItem);

            gridView1.Columns[fieldName].Summary.Add(DevExpress.Data.SummaryItemType.Sum, fieldName, "{0:n2}");

        }

        private void AddCustomSummaryItem(string fieldName)

        {

            GridGroupSummaryItem customSummaryItem = new GridGroupSummaryItem

            {

                FieldName = fieldName,

                SummaryType = DevExpress.Data.SummaryItemType.Custom,

                DisplayFormat = "{0:n2}",

                ShowInGroupColumnFooter = gridView1.Columns[fieldName]

            };

            gridView1.GroupSummary.Add(customSummaryItem);

            // Footer'da gösterim için CustomSummaryItem eklenir

            gridView1.Columns[fieldName].Summary.Add(DevExpress.Data.SummaryItemType.Custom, fieldName, "{0:n2}");

        }

    }

}

 

 

 

 2024 Kasım 07 Perşembe
 267