2001-12-01 Gaurav Vaish <gvaish@iitk.ac.in>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / BaseDataList.cs
1 /**\r
2  * Namespace: System.Web.UI.WebControls\r
3  * Class:     BaseDataList\r
4  *\r
5  * Author:  Gaurav Vaish\r
6  * Maintainer: gvaish@iitk.ac.in\r
7  * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
8  * Status:  20%\r
9  *\r
10  * (C) Gaurav Vaish (2001)\r
11  */\r
12 \r
13 using System;\r
14 using System.Collections;\r
15 using System.Web;\r
16 using System.Web.UI;\r
17 \r
18 namespace System.Web.UI.WebControls\r
19 {\r
20         public abstract class BaseDataList: WebControl\r
21         {\r
22 \r
23                 private int cellPadding = -1;\r
24                 private int cellSpacing = 0;\r
25                 private object dataSource = null;\r
26                 private string dataKeyField = String.Empty;\r
27                 private DataKeyCollection dataKeys;             // TODO: From where do get the values into it?\r
28                 private string dataMember;\r
29                 private GridLines gridLines;\r
30                 private HorizontalAlign hAlign;\r
31 \r
32                 public BaseDataList()\r
33                 {\r
34                         // TODO Something\r
35                         dataKeys = new DataKeyCollection(new ArrayList());\r
36                         dataMember = String.Empty;\r
37                         gridLines = GridLines.Both;\r
38                         hAlign = HorizontalAlign.NotSet;\r
39                 }\r
40 \r
41                 public static bool IsBindableType(Type type)\r
42                 {\r
43                         //TODO: To see what has to be here\r
44                         if(type.IsPrimitive)\r
45                         {\r
46                                 //Type.GetTypeFromHandle(new RuntimeTypeHandle());\r
47                         }\r
48                         return false; //for the time being, to be able to make it compile\r
49                 }\r
50 \r
51                 public virtual int CellPadding\r
52                 {\r
53                         get\r
54                         {\r
55                                 return cellPadding;\r
56                         }\r
57                         set\r
58                         {\r
59                                 cellPadding = value;\r
60                         }\r
61                 }\r
62 \r
63                 public virtual int CellSpacing\r
64                 {\r
65                         get\r
66                         {\r
67                                 return cellSpacing;\r
68                         }\r
69                         set\r
70                         {\r
71                                 cellSpacing = value;\r
72                         }\r
73                 }\r
74 \r
75                 public virtual string DataKeyField\r
76                 {\r
77                         get\r
78                         {\r
79                                 return dataKeyField;\r
80                         }\r
81                         set\r
82                         {\r
83                                 dataKeyField = value;\r
84                         }\r
85                 }\r
86 \r
87                 public DataKeyCollection DataKeys\r
88                 {\r
89                         get\r
90                         {\r
91                                 return dataKeys;\r
92                         }\r
93                 }\r
94 \r
95                 public string DataMember\r
96                 {\r
97                         get\r
98                         {\r
99                                 return dataMember;\r
100                         }\r
101                         set\r
102                         {\r
103                                 dataMember = value;\r
104                         }\r
105                 }\r
106 \r
107                 public virtual object DataSource\r
108                 {\r
109                         get\r
110                         {\r
111                                 return dataSource;\r
112                         }\r
113                         set\r
114                         {\r
115                                 dataSource = value;\r
116                         }\r
117                 }\r
118 \r
119                 public virtual GridLines GridLines\r
120                 {\r
121                         get\r
122                         {\r
123                                 return gridLines;\r
124                         }\r
125                         set\r
126                         {\r
127                                 gridLines = value;\r
128                         }\r
129                 }\r
130 \r
131                 public virtual HorizontalAlign HorizontalAlign\r
132                 {\r
133                         get\r
134                         {\r
135                                 return hAlign;\r
136                         }\r
137                         set\r
138                         {\r
139                                 hAlign = value;\r
140                         }\r
141                 }\r
142 \r
143                 public override void DataBind()\r
144                 {\r
145                         // TODO: have to write the implementation\r
146                         // I am not sure of whether it will be of any use here since\r
147                         // I am an abstract class, and have no identity of myself.\r
148                         //dataBindEventArgs = EventArgs.Empty;\r
149                         OnDataBinding(EventArgs.Empty);\r
150                         throw new NotImplementedException();\r
151                 }\r
152 \r
153                 //TODO: Check - where are the following abstract methods?\r
154                 /*\r
155                  * CreateControlHierarchy(bool)\r
156                  * PrepareControlHierarchy()\r
157                 */\r
158 \r
159                 protected override void AddParsedSubObject(object o)\r
160                 {\r
161                         // Preventing literal controls from being added as children: Do nothing here.\r
162                 }\r
163 \r
164                 protected override void CreateChildControls()\r
165                 {\r
166                         Controls.Clear();\r
167                         if(ViewState["_!ItemCount"]!=null)\r
168                         {\r
169                                 CreateControlHierarchy(true);\r
170                                 ClearChildViewState();\r
171                         }\r
172                 }\r
173 \r
174                 protected abstract void CreateControlHierarchy(bool useDataSource);\r
175         }\r
176 }\r