DynamicGridAggregateRenderer.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System.Linq;
  2. using System.Windows;
  3. using Syncfusion.Data;
  4. using Syncfusion.UI.Xaml.Grid;
  5. using Syncfusion.UI.Xaml.Grid.Cells;
  6. namespace InABox.DynamicGrid;
  7. public class DynamicGridAggregateRenderer : GridTableSummaryCellRenderer
  8. {
  9. public override void OnUpdateEditBinding(DataColumnBase dataColumn, GridTableSummaryCell element, object dataContext)
  10. {
  11. if (DataGrid == null)
  12. return;
  13. var record = dataContext as SummaryRecordEntry;
  14. if (record == null || record.SummaryRow == null)
  15. return;
  16. foreach (var summaryColumn in record.SummaryRow.SummaryColumns)
  17. {
  18. if (!summaryColumn.MappingName.Equals(dataColumn.GridColumn.MappingName))
  19. continue;
  20. var format = summaryColumn.Format.Replace("{", "").Replace("}", "").Split(':');
  21. var cmd = format.FirstOrDefault();
  22. var fmt = format.Length > 1 ? string.Join(":", format.Skip(1)) : "";
  23. var agg = SummaryCreator.GetSummaryAggregate(summaryColumn, DataGrid.View) as IDynamicGridSummaryAggregate;
  24. if (agg != null)
  25. element.Content = agg.Format(cmd, fmt);
  26. else
  27. base.OnUpdateEditBinding(dataColumn, element, dataContext);
  28. }
  29. }
  30. }