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}"); } } }
|