123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using InABox.Core;
- using Syncfusion.SfDataGrid.XForms;
- namespace InABox.Mobile
- {
- public class MobileGridColumns
- {
- private SfDataGrid _grid;
- private List<IMobileGridColumn> _columns;
- private bool _updating;
- public IMobileGridColumn this[int index] => _columns[index];
- public event EventHandler Changed;
-
- public MobileGridColumns(SfDataGrid grid)
- {
- _grid = grid;
- _columns = new List<IMobileGridColumn>();
- }
- private void Update()
- {
- if (_updating)
- return;
-
- _grid.Columns.Suspend();
-
- _grid.Columns.Clear();
-
- foreach (var column in _columns)
- _grid.Columns.Add(column.CreateColumn());
- _grid.TableSummaryRows.Clear();
- var summaries = _columns.OfType<IMobileGridSummaryColumn>()
- .Where(x => x.Summary != MobileGridSummaryType.None).ToArray();
- if (summaries.Any())
- {
- var row = new GridTableSummaryRow() { ShowSummaryInRow = false };
- foreach (var summary in summaries)
- row.SummaryColumns.Add(summary.CreateSummaryColumn());
- _grid.TableSummaryRows.Add(row);
- }
-
- _grid.Columns.Resume();
- _grid.RefreshColumns();
- Changed?.Invoke(this, EventArgs.Empty);
- }
- public MobileGridColumns BeginUpdate()
- {
- _updating = true;
- return this;
- }
- public MobileGridColumns EndUpdate()
- {
- _updating = false;
- Update();
- return this;
- }
- public MobileGridColumns Clear()
- {
- _columns.Clear();
- Update();
- return this;
- }
- public MobileGridColumns Add(IMobileGridColumn column)
- {
- _columns.Add(column);
- Update();
- return this;
- }
-
- }
- }
|