3 // Permission is hereby granted, free of charge, to any person obtaining
4 // a copy of this software and associated documentation files (the
5 // "Software"), to deal in the Software without restriction, including
6 // without limitation the rights to use, copy, modify, merge, publish,
7 // distribute, sublicense, and/or sell copies of the Software, and to
8 // permit persons to whom the Software is furnished to do so, subject to
9 // the following conditions:
11 // The above copyright notice and this permission notice shall be
12 // included in all copies or substantial portions of the Software.
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 * Namespace: System.Web.UI.Design.WebControls
24 * Class: RepeaterDesigner
26 * Author: Gaurav Vaish
27 * Maintainer: gvaish_mono@lycos.com
29 * (C) Gaurav Vaish (2002)
33 using System
.Collections
;
35 using System
.Web
.UI
.WebControls
;
36 using System
.Web
.UI
.Design
;
38 namespace System
.Web
.UI
.Design
.WebControls
40 public class RepeaterDesigner
: ControlDesigner
, IDataSourceProvider
42 private DataTable desTimeDataTable
;
43 private DataTable dummyDataTable
;
44 private Repeater repeater
;
46 public RepeaterDesigner()
50 public string DataMember
54 return repeater
.DataMember
;
58 repeater
.DataMember
= value;
62 public string DataSource
66 DataBinding db
= DataBindings
["DataSource"];
73 if(value == null || value.Length
== 0)
75 DataBindings
.Remove("DataSource");
78 DataBinding toSet
= new DataBinding("DataSource",
79 typeof(IEnumerable
), value);
80 toSet
.Expression
= value;
81 DataBindings
.Add(toSet
);
83 OnDataSourceChanged();
84 OnBindingsCollectionChanged("DataSource");
88 public virtual void OnDataSourceChanged()
90 desTimeDataTable
= null;
93 protected bool TemplateExists
97 return (repeater
.ItemTemplate
!= null ||
98 repeater
.HeaderTemplate
!= null ||
99 repeater
.FooterTemplate
!= null ||
100 repeater
.AlternatingItemTemplate
!= null);
104 protected IEnumerable
GetDesignTimeDataSource(int minimumRows
)
106 return GetDesignTimeDataSource(GetResolvedSelectedDataSource(),
110 protected IEnumerable
GetDesignTimeDataSource(IEnumerable selectedDataSource
,
113 DataTable toDeploy
= desTimeDataTable
;
116 if(selectedDataSource
!= null)
118 desTimeDataTable
= DesignTimeData
.CreateSampleDataTable(
120 toDeploy
= desTimeDataTable
;
123 if(dummyDataTable
== null)
124 dummyDataTable
= DesignTimeData
.CreateDummyDataTable();
125 toDeploy
= dummyDataTable
;
128 return DesignTimeData
.GetDesignTimeDataSource(toDeploy
,
132 protected override void Dispose(bool disposing
)
136 base.Dispose(disposing
);
139 public object GetSelectedDataSource()
141 object retVal
= null;
142 DataBinding db
= DataBindings
["DataSource"];
145 retVal
= DesignTimeData
.GetSelectedDataSource(repeater
, db
.Expression
);
150 public virtual IEnumerable
GetResolvedSelectedDataSource()
152 IEnumerable retVal
= null;
153 DataBinding db
= DataBindings
["DataSource"];
156 retVal
= DesignTimeData
.GetSelectedDataSource(repeater
, db
.Expression
, DataMember
);