TemplateColumn.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. //
  2. // System.Web.UI.WebControls.TemplateColumn.cs
  3. //
  4. // Authors:
  5. // Gaurav Vaish ([email protected])
  6. // Andreas Nahr ([email protected])
  7. //
  8. // (C) Gaurav Vaish (2002)
  9. // (C) 2003 Andreas Nahr
  10. //
  11. using System;
  12. using System.ComponentModel;
  13. using System.Web;
  14. using System.Web.UI;
  15. namespace System.Web.UI.WebControls
  16. {
  17. public class TemplateColumn : DataGridColumn
  18. {
  19. private ITemplate editItemTemplate;
  20. private ITemplate footerTemplate;
  21. private ITemplate headerTemplate;
  22. private ITemplate itemTemplate;
  23. public TemplateColumn(): base()
  24. {
  25. }
  26. [DefaultValue (null), Browsable (false)]
  27. [PersistenceMode (PersistenceMode.InnerProperty), TemplateContainer (typeof (DataGridItem))]
  28. [WebSysDescription ("The template that is used to build that are being edited rows for this column.")]
  29. public virtual ITemplate EditItemTemplate
  30. {
  31. get
  32. {
  33. return editItemTemplate;
  34. }
  35. set
  36. {
  37. editItemTemplate = value;
  38. OnColumnChanged();
  39. }
  40. }
  41. [DefaultValue (null), Browsable (false)]
  42. [PersistenceMode (PersistenceMode.InnerProperty), TemplateContainer (typeof (DataGridItem))]
  43. [WebSysDescription ("The template that is used to build the footer for this column.")]
  44. public virtual ITemplate FooterTemplate
  45. {
  46. get
  47. {
  48. return footerTemplate;
  49. }
  50. set
  51. {
  52. footerTemplate = value;
  53. OnColumnChanged();
  54. }
  55. }
  56. [DefaultValue (null), Browsable (false)]
  57. [PersistenceMode (PersistenceMode.InnerProperty), TemplateContainer (typeof (DataGridItem))]
  58. [WebSysDescription ("The template that is used to build the header for this column.")]
  59. public virtual ITemplate HeaderTemplate
  60. {
  61. get
  62. {
  63. return headerTemplate;
  64. }
  65. set
  66. {
  67. headerTemplate = value;
  68. OnColumnChanged();
  69. }
  70. }
  71. [DefaultValue (null), Browsable (false)]
  72. [PersistenceMode (PersistenceMode.InnerProperty), TemplateContainer (typeof (DataGridItem))]
  73. [WebSysDescription ("The template that is used to build rows for this column.")]
  74. public virtual ITemplate ItemTemplate
  75. {
  76. get
  77. {
  78. return itemTemplate;
  79. }
  80. set
  81. {
  82. itemTemplate = value;
  83. OnColumnChanged();
  84. }
  85. }
  86. public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)
  87. {
  88. base.InitializeCell(cell, columnIndex, itemType);
  89. ITemplate toRender = null;
  90. switch(itemType)
  91. {
  92. case ListItemType.Header: toRender = headerTemplate;
  93. break;
  94. case ListItemType.Footer: toRender = footerTemplate;
  95. break;
  96. case ListItemType.SelectedItem:
  97. case ListItemType.AlternatingItem:
  98. case ListItemType.Item: toRender = itemTemplate;
  99. break;
  100. case ListItemType.EditItem:
  101. toRender = (editItemTemplate != null ? editItemTemplate : itemTemplate);
  102. break;
  103. }
  104. if(toRender != null)
  105. {
  106. cell.Text = String.Empty;
  107. toRender.InstantiateIn(cell);
  108. }
  109. }
  110. }
  111. }