2 * Namespace: System.Web.UI.WebControls
3 * Class: DataGridColumn
6 * Maintainer: gvaish@iitk.ac.in
7 * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>
11 * (C) Gaurav Vaish (2002)
17 using System.ComponentModel;
19 namespace System.Web.UI.WebControls
21 [TypeConverter(typeof(ExpandableObjectConverter))]
22 public abstract class DataGridColumn : IStateManager
24 private StateBag viewState;
26 private TableItemStyle footerStyle;
27 private TableItemStyle headerStyle;
28 private TableItemStyle itemStyle;
30 private DataGrid owner;
31 private bool designMode;
33 public DataGridColumn()
35 viewState = new StateBag();
38 internal TableItemStyle FooterStyleInternal
46 internal TableItemStyle HeaderStyleInternal
54 internal TableItemStyle ItemStyleInternal
62 public virtual TableItemStyle FooterStyle
66 if(footerStyle == null)
68 footerStyle = new TableItemStyle();
69 if(IsTrackingViewState)
71 footerStyle.TrackViewState();
78 public virtual TableItemStyle HeaderStyle
82 if(headerStyle == null)
84 headerStyle= new TableItemStyle();
85 if(IsTrackingViewState)
87 headerStyle.TrackViewState();
94 public virtual TableItemStyle ItemStyle
100 itemStyle = new TableItemStyle();
101 if(IsTrackingViewState)
103 itemStyle.TrackViewState();
110 public virtual string FooterText
114 object o = ViewState["FooterText"];
123 ViewState["FooterText"] = value;
128 public virtual string HeaderImageUrl
132 object o = ViewState["HeaderImageUrl"];
141 ViewState["HeaderImageUrl"] = value;
146 public virtual string HeaderText
150 object o = ViewState["HeaderText"];
159 ViewState["HeaderText"] = value;
164 public virtual string SortExpression
168 object o = ViewState["SortExpression"];
177 ViewState["SortExpression"] = value;
186 object o = ViewState["Visible"];
195 ViewState["Visible"] = value;
200 public virtual void Initialize()
202 if(owner != null && owner.Site != null)
204 designMode = owner.Site.DesignMode;
208 public virtual void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)
212 case ListItemType.Header : InitializeCellHeader(cell, columnIndex);
214 case ListItemType.Footer : InitializeCellFooter(cell, columnIndex);
220 private void InitializeCellHeader(TableCell cell, int columnIndex)
222 WebControl ctrl = null;
224 string sortExpr = "";
225 ImageButton headButton;
227 LinkButtonInternal link;
231 sort = owner.AllowSorting;
235 sortExpr = SortExpression;
236 if(sortExpr.Length == 0)
241 if(HeaderImageUrl.Length > 0)
245 headButton = new ImageButton();
246 headButton.ImageUrl = HeaderImageUrl;
247 headButton.CommandName = "Sort";
248 headButton.CommandArgument = sortExpr;
249 headButton.CausesValidation = false;
253 headImage = new Image();
254 headImage.ImageUrl = HeaderImageUrl;
261 link = new LinkButtonInternal();
262 link.Text = HeaderText;
263 link.CommandName = "Sort";
264 link.CommandArgument = sortExpr;
265 link.CausesValidation = false;
269 if(HeaderText.Length > 0)
271 cell.Text = HeaderText;
274 cell.Text = " ";
280 cell.Controls.Add(ctrl);
284 private void InitializeCellFooter(TableCell cell, int columnIndex)
286 cell.Text = (FooterText.Length > 0 ? FooterText : " ");
289 public override string ToString()
294 protected bool DesignMode
302 protected DataGrid Owner
310 protected StateBag ViewState
321 protected virtual void OnColumnChanged()
325 owner.OnColumnsChanged();
329 internal void SetOwner (DataGrid datagrid)
334 protected virtual object SaveViewState()
336 object[] states = new object[4];
337 states[0] = ViewState.SaveViewState();
338 states[1] = (footerStyle == null ? null : footerStyle.SaveViewState());
339 states[2] = (headerStyle == null ? null : headerStyle.SaveViewState());
340 states[3] = (itemStyle == null ? null : itemStyle.SaveViewState());
344 protected virtual void LoadViewState(object savedState)
346 if(savedState!= null)
348 object[] states = (object[]) savedState;
351 ViewState.LoadViewState(states[0]);
352 FooterStyle.LoadViewState(states[1]);
353 HeaderStyle.LoadViewState(states[2]);
354 ItemStyle.LoadViewState(states[3]);
359 protected virtual void TrackViewState()
362 ViewState.TrackViewState();
363 if(footerStyle != null)
365 footerStyle.TrackViewState();
367 if(headerStyle != null)
369 headerStyle.TrackViewState();
371 if(itemStyle != null)
373 itemStyle.TrackViewState();
377 protected bool IsTrackingViewState
385 void IStateManager.LoadViewState(object savedState)
387 LoadViewState(savedState);
390 object IStateManager.SaveViewState()
392 return SaveViewState();
395 void IStateManager.TrackViewState()
400 bool IStateManager.IsTrackingViewState
404 return IsTrackingViewState;