DynamicDataContainerTableProvider.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections.ObjectModel;
  4. using System.Linq;
  5. using System.Web;
  6. using System.Web.DynamicData;
  7. using System.Web.DynamicData.ModelProviders;
  8. using MonoTests.DataSource;
  9. namespace MonoTests.ModelProviders
  10. {
  11. public class DynamicDataContainerTableProvider : TableProvider
  12. {
  13. ReadOnlyCollection<ColumnProvider> columns;
  14. DynamicDataTable table;
  15. public DynamicDataContainerTableProvider (DynamicDataContainerModelProvider owner, DynamicDataTable table)
  16. : base (owner)
  17. {
  18. if (table == null)
  19. throw new ArgumentNullException ("table");
  20. this.EntityType = table.DataType;
  21. this.Name = table.Name;
  22. this.table = table;
  23. }
  24. public override ReadOnlyCollection<ColumnProvider> Columns
  25. {
  26. get {
  27. if (columns != null)
  28. return columns;
  29. columns = LoadColumns ();
  30. return columns;
  31. }
  32. }
  33. public override IQueryable GetQuery (object context)
  34. {
  35. throw new NotImplementedException ();
  36. }
  37. ReadOnlyCollection<ColumnProvider> LoadColumns ()
  38. {
  39. List<DynamicDataColumn> containerColumns = table.GetColumns ();
  40. if (containerColumns == null || containerColumns.Count == 0)
  41. return new ReadOnlyCollection<ColumnProvider> (new List<ColumnProvider> ());
  42. var columns = new List <ColumnProvider> ();
  43. foreach (var column in containerColumns)
  44. columns.Add (new DynamicDataContainerColumnProvider (this, column));
  45. return new ReadOnlyCollection<ColumnProvider> (columns);
  46. }
  47. }
  48. }