MobileGridColumn.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using System.Linq.Expressions;
  3. using Microsoft.SqlServer.Server;
  4. using Syncfusion.SfDataGrid.XForms;
  5. using Xamarin.Forms;
  6. namespace comal.timesheets
  7. {
  8. public abstract class MobileGridColumn<TEntity, TType> : IMobileGridColumn
  9. {
  10. public MobileGridColumn()
  11. {
  12. Alignment = TextAlignment.Center;
  13. Width = GridLength.Star;
  14. }
  15. public Expression<Func<TEntity,TType>> Column { get; set; }
  16. // This should come from CoreUtils
  17. public String ColumnName => Column?.ToString().Replace(" ","").Replace("x=>x.","") ?? "";
  18. public GridLength Width { get; set; }
  19. public String Caption { get; set; }
  20. public TextAlignment Alignment { get; set; }
  21. public Action<IMobileGridColumn, object> Tapped { get; set; }
  22. public abstract GridColumn CreateColumn();
  23. public TColumn CreateColumn<TColumn>() where TColumn : GridColumn, new()
  24. {
  25. var result = new TColumn();
  26. result.MappingName = ColumnName;
  27. if (Width.IsStar)
  28. result.ColumnSizer = ColumnSizer.Star;
  29. else if (Width.IsAuto)
  30. result.ColumnSizer = ColumnSizer.Auto;
  31. else
  32. {
  33. result.ColumnSizer = ColumnSizer.None;
  34. result.Width = Width.Value;
  35. }
  36. result.TextAlignment = Alignment;
  37. result.HeaderTextAlignment = Alignment;
  38. result.HeaderText = Caption;
  39. return result;
  40. }
  41. }
  42. }