DynamicGridCurrencyColumn.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Media;
  4. using InABox.Core;
  5. using Syncfusion.Data;
  6. using Syncfusion.UI.Xaml.Grid;
  7. namespace InABox.DynamicGrid;
  8. public class DynamicGridCurrencyColumn<TEntity> : DynamicGridNumericColumn<TEntity, CurrencyEditor, GridCurrencyColumn> where TEntity : BaseObject
  9. {
  10. protected override void Configure(GridCurrencyColumn column, CurrencyEditor editor)
  11. {
  12. column.CurrencyDecimalDigits = GetDigits(editor);
  13. column.CurrencyGroupSeparator = ",";
  14. column.CurrencyGroupSizes = new Int32Collection(new[] { 3, 3, 3, 3, 3, 3 });
  15. }
  16. public override int Digits => Column.CurrencyDecimalDigits;
  17. public override GridSummaryColumn? Summary()
  18. {
  19. if (Definition == null || Definition.Editor.Summary == Core.Summary.None)
  20. return null;
  21. var format = Definition.Editor.Summary == Core.Summary.Count
  22. ? "N0"
  23. : $"C{Digits}";
  24. var summary = new GridSummaryColumn
  25. {
  26. Name = MappingName,
  27. Format = "{" + (Definition.Editor.Summary == Core.Summary.Sum ? "Sum" : "Count") + ":" + format + "}",
  28. MappingName = MappingName,
  29. SummaryType = Definition.Editor.Summary == Core.Summary.Sum
  30. ? SummaryType.DoubleAggregate
  31. : SummaryType.CountAggregate,
  32. CustomAggregate = new DynamicGridDoubleAggregate()
  33. };
  34. return summary;
  35. }
  36. public DynamicGridCurrencyColumn(DynamicGridColumn definition) : base(definition)
  37. {
  38. }
  39. }