MobileGridColumns.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Syncfusion.SfDataGrid.XForms;
  4. namespace comal.timesheets
  5. {
  6. public class MobileGridColumns
  7. {
  8. private SfDataGrid _grid;
  9. private List<IMobileGridColumn> _columns;
  10. private bool _updating;
  11. public IMobileGridColumn this[int index] => _columns[index];
  12. public MobileGridColumns(SfDataGrid grid)
  13. {
  14. _grid = grid;
  15. _columns = new List<IMobileGridColumn>();
  16. }
  17. private void Update()
  18. {
  19. if (_updating)
  20. return;
  21. _grid.Columns.Suspend();
  22. _grid.Columns.Clear();
  23. foreach (var column in _columns)
  24. _grid.Columns.Add(column.CreateColumn());
  25. _grid.TableSummaryRows.Clear();
  26. var summaries = _columns.OfType<IMobileGridSummaryColumn>()
  27. .Where(x => x.Summary != MobileGridSummaryType.None).ToArray();
  28. if (summaries.Any())
  29. {
  30. var row = new GridTableSummaryRow() { ShowSummaryInRow = false };
  31. foreach (var summary in summaries)
  32. row.SummaryColumns.Add(summary.CreateSummaryColumn());
  33. _grid.TableSummaryRows.Add(row);
  34. }
  35. _grid.Columns.Resume();
  36. _grid.RefreshColumns();
  37. }
  38. public MobileGridColumns BeginUpdate()
  39. {
  40. _updating = true;
  41. return this;
  42. }
  43. public MobileGridColumns EndUpdate()
  44. {
  45. _updating = false;
  46. Update();
  47. return this;
  48. }
  49. public MobileGridColumns Clear()
  50. {
  51. _columns.Clear();
  52. Update();
  53. return this;
  54. }
  55. public MobileGridColumns Add(IMobileGridColumn column)
  56. {
  57. _columns.Add(column);
  58. Update();
  59. return this;
  60. }
  61. }
  62. }