MobileGridNumericColumn.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System;
  2. using System.Linq;
  3. using Syncfusion.SfDataGrid.XForms;
  4. using Xamarin.Forms;
  5. namespace comal.timesheets
  6. {
  7. public abstract class MobileGridNumericColumn<TEntity, TType> : MobileGridColumn<TEntity, TType>
  8. where TType : struct, IComparable, IComparable<TType>, IConvertible, IEquatable<TType>, IFormattable
  9. {
  10. public MobileGridSummaryType Summary { get; set; }
  11. public MobileGridNumericColumn() : base()
  12. {
  13. Width = GridLength.Auto;
  14. }
  15. private bool IsIntegral()
  16. {
  17. return new Type[]
  18. {
  19. typeof(sbyte), typeof(SByte),
  20. typeof(byte), typeof(Byte),
  21. typeof(short), typeof(Int16),
  22. typeof(ushort), typeof(UInt16),
  23. typeof(int), typeof(Int32),
  24. typeof(uint), typeof(UInt32),
  25. typeof(long), typeof(Int64),
  26. typeof(ulong), typeof(UInt64)
  27. }
  28. .Contains(typeof(TType));
  29. }
  30. public GridSummaryColumn CreateSummaryColumn()
  31. {
  32. if (Summary == MobileGridSummaryType.None)
  33. return null;
  34. var result = new GridSummaryColumn();
  35. result.SummaryType = IsIntegral()
  36. ? Syncfusion.Data.SummaryType.Int32Aggregate
  37. : Syncfusion.Data.SummaryType.DoubleAggregate;
  38. result.Format = Summary == MobileGridSummaryType.Count
  39. ? "{}{Count}"
  40. : "{}{Sum}";
  41. result.MappingName = ColumnName;
  42. return result;
  43. }
  44. }
  45. }