-/**\r
- * Namespace: System.Web.UI.WebControls\r
- * Class: DataGridColumn\r
- * \r
- * Author: Gaurav Vaish\r
- * Maintainer: gvaish@iitk.ac.in\r
- * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
- * Implementation: yes\r
- * Status: 100%\r
- * \r
- * (C) Gaurav Vaish (2002)\r
- */\r
-\r
-using System;\r
-using System.Web;\r
-using System.Web.UI;\r
-\r
-namespace System.Web.UI.WebControls\r
-{\r
- public class DataGridColumn : IStateManager\r
- {\r
- private StateBag viewState;\r
- private bool marked;\r
- private TableItemStyle footerStyle;\r
- private TableItemStyle headerStyle;\r
- private TableItemStyle itemStyle;\r
-\r
- private DataGrid owner;\r
- private bool designMode;\r
-\r
- public DataGridColumn()\r
- {\r
- viewStat = new StateBag();\r
- }\r
-\r
- public virtual TableItemStyle FooterStyle\r
- {\r
- get\r
- {\r
- if(footerStyle == null)\r
- {\r
- footerStyle = new TableItemStyle();\r
- if(IsTrackingViewState)\r
- {\r
- footerStyle.TrackViewState();\r
- }\r
- }\r
- return footerStyle;\r
- }\r
- }\r
-\r
- public virtual TableItemStyle HeaderStyle\r
- {\r
- get\r
- {\r
- if(headerStyle == null)\r
- {\r
- headerStyle= new TableItemStyle();\r
- if(IsTrackingViewState)\r
- {\r
- headerStyle.TrackViewState();\r
- }\r
- }\r
- return headerStyle;\r
- }\r
- }\r
-\r
- public virtual TableItemStyle ItemStyle\r
- {\r
- get\r
- {\r
- if(itemStyle == null)\r
- {\r
- itemStyle = new TableItemStyle();\r
- if(IsTrackingViewState)\r
- {\r
- itemStyle.TrackViewState();\r
- }\r
- }\r
- return itemStyle;\r
- }\r
- }\r
-\r
- public virtual string FooterText\r
- {\r
- get\r
- {\r
- object o = ViewState["FooterText"];\r
- if(o != null)\r
- {\r
- return (string)o;\r
- }\r
- return String.Empty;\r
- }\r
- set\r
- {\r
- ViewState["FooterText"] = value;\r
- OnColumnChanged();\r
- }\r
- }\r
-\r
- public virtual string HeaderImageUrl\r
- {\r
- get\r
- {\r
- object o = ViewState["HeaderImageUrl"];\r
- if(o != null)\r
- {\r
- return (string)o;\r
- }\r
- return String.Empty;\r
- }\r
- set\r
- {\r
- ViewState["HeaderImageUrl"] = value;\r
- OnColumnChanged();\r
- }\r
- }\r
-\r
- public virtual string HeaderText\r
- {\r
- get\r
- {\r
- object o = ViewState["HeaderText"];\r
- if(o != null)\r
- {\r
- return (string)o;\r
- }\r
- return String.Empty;\r
- }\r
- set\r
- {\r
- ViewState["HeaderText"] = value;\r
- OnColumnChanged();\r
- }\r
- }\r
-\r
- public virtual string SortExpression\r
- {\r
- get\r
- {\r
- object o = ViewState["SortExpression"];\r
- if(o != null)\r
- {\r
- return (string)o;\r
- }\r
- return String.Empty;\r
- }\r
- set\r
- {\r
- ViewState["SortExpression"] = value;\r
- OnColumnChanged();\r
- }\r
- }\r
-\r
- public bool Visible\r
- {\r
- get\r
- {\r
- object o = ViewState["Visible"];\r
- if(o != null)\r
- {\r
- return (bool)o;\r
- }\r
- return true;\r
- }\r
- set\r
- {\r
- ViewState["Visible"] = value;\r
- OnColumnChanged();\r
- }\r
- }\r
- \r
- public virtual void Initialize()\r
- {\r
- if(owner != null && owner.Site != null)\r
- {\r
- designMode = owner.Site.DesignMode;\r
- }\r
- }\r
- \r
- public virtual void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)\r
- {\r
- switch(itemType)\r
- {\r
- ListItemType.Header : InitializeCellHeader(cell, columnIndex);\r
- break;\r
- ListItemType.Footer : InitializeCellFooter(cell, columnIndex);\r
- break;\r
- default : return;\r
- }\r
- }\r
-\r
- private void InitializeCellHeader(TableCell cell, int columnIndex)\r
- {\r
- WebControl ctrl = null;\r
- bool sort = true;\r
- string sortExpr;\r
- ImageButton headButton;\r
- Image headImage;\r
- LinkButtonInternal link;\r
-\r
- if(owner != null)\r
- {\r
- sort = owner.AllowSorting;\r
- }\r
- if(sort)\r
- {\r
- sortExpr = SortExpression;\r
- if(sortExpr.Length == 0)\r
- {\r
- sort = false;\r
- }\r
- }\r
- if(HeaderImageUrl.Length > 0)\r
- {\r
- if(sort)\r
- {\r
- headButton = new ImageButton();\r
- headButton.ImageUrl = HeaderImageUrl;\r
- headButton.CommandName = "Sort";\r
- headButton.CommandArgument = sortExpr;\r
- headButton.CausesValidation = false;\r
- ctrl = headButton;\r
- } else\r
- {\r
- headImage = new Image();\r
- headImage.ImageUrl = HeaderImageUrl;\r
- ctrl = headImage;\r
- }\r
- } else\r
- {\r
- if(sort)\r
- {\r
- link = new LinkButtonInternal();\r
- link.Text = HeaderText;\r
- link.CommandName = "Sort";\r
- link.CommandArgument = sortExpr;\r
- link.CausesValidation = false;\r
- ctrl = link;\r
- } else\r
- {\r
- if(HeaderText.Length > 0)\r
- {\r
- cell.Text = HeaderText;\r
- } else\r
- {\r
- cell.Text = " ";\r
- }\r
- }\r
- }\r
- if(ctrl != null)\r
- {\r
- Controls.Add(ctrl);\r
- }\r
- }\r
-\r
- private void InitializeCellFooter(TableCell cell, int columnIndex)\r
- {\r
- cell.Text = (FooterText.Length > 0 ? FooterText : " ");\r
- }\r
- \r
- public override string ToString()\r
- {\r
- return String.Empty;\r
- }\r
- \r
- protected bool DesignMode\r
- {\r
- get\r
- {\r
- return designMode;\r
- }\r
- }\r
- \r
- protected DataGrid Owner\r
- {\r
- get\r
- {\r
- return owner;\r
- }\r
- }\r
- \r
- protected StateBag ViewState\r
- {\r
- get\r
- {\r
- return viewState;\r
- }\r
- }\r
- \r
- /// <summary>\r
- /// Undocumented\r
- /// </summary>\r
- protected void OnColumnChanged()\r
- {\r
- if(owner != null)\r
- {\r
- owner.OnColumnChanged();\r
- }\r
- }\r
-\r
- protected virtual object SaveViewState()\r
- {\r
- object[] states = new object[4];\r
- states[0] = ViewState.SaveViewState();\r
- states[1] = (footerStyle == null ? null : footerStyle.SaveViewState());\r
- states[2] = (headerStyle == null ? null : headerStyle.SaveViewState());\r
- states[3] = (itemStyle == null ? null : itemStyle.SaveViewState());\r
- return states;\r
- }\r
- \r
- protected virtual void LoadViewState(object savedState)\r
- {\r
- if(savedState!= null)\r
- {\r
- object[] states = (object[]) savedState;\r
- if(states != null)\r
- {\r
- ViewState.LoadViewState(states[0]);\r
- FooterStyle.LoadViewState(states[1]);\r
- HeaderStyle.LoadViewState(states[2]);\r
- ItemStyle.LoadViewStae(states[3]);\r
- }\r
- }\r
- }\r
- \r
- protected virtual void TrackViewState()\r
- {\r
- marked = true;\r
- ViewState.TrackViewState();\r
- if(footerStyle != null)\r
- {\r
- footerStyle.TrackViewState();\r
- }\r
- if(headerStyle != null)\r
- {\r
- headerStyle.TrackViewState();\r
- }\r
- if(itemStyle != null)\r
- {\r
- itemStyle.TrackViewState();\r
- }\r
- }\r
- \r
- void IStateManager.LoadViewState(object savedState)\r
- {\r
- LoadViewState(savedState);\r
- }\r
- \r
- object IStateManager.SaveViewState()\r
- {\r
- return SaveViewState();\r
- }\r
- \r
- void IStateManager.TrackViewState()\r
- {\r
- TrackViewState();\r
- }\r
- \r
- bool IStateManager.IsTrackingViewState\r
- {\r
- get\r
- {\r
- return marked;\r
- }\r
- }\r
- }\r
-}\r
+/**
+ * Namespace: System.Web.UI.WebControls
+ * Class: DataGridColumn
+ *
+ * Author: Gaurav Vaish
+ * Maintainer: gvaish@iitk.ac.in
+ * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>
+ * Implementation: yes
+ * Status: 100%
+ *
+ * (C) Gaurav Vaish (2002)
+ */
+
+using System;
+using System.Web;
+using System.Web.UI;
+using System.ComponentModel;
+
+namespace System.Web.UI.WebControls
+{
+ [TypeConverter(typeof(ExpandableObjectConverter))]
+ public abstract class DataGridColumn : IStateManager
+ {
+ private StateBag viewState;
+ private bool marked;
+ private TableItemStyle footerStyle;
+ private TableItemStyle headerStyle;
+ private TableItemStyle itemStyle;
+
+ private DataGrid owner;
+ private bool designMode;
+
+ public DataGridColumn()
+ {
+ viewState = new StateBag();
+ }
+
+ internal TableItemStyle FooterStyleInternal
+ {
+ get
+ {
+ return footerStyle;
+ }
+ }
+
+ internal TableItemStyle HeaderStyleInternal
+ {
+ get
+ {
+ return headerStyle;
+ }
+ }
+
+ internal TableItemStyle ItemStyleInternal
+ {
+ get
+ {
+ return itemStyle;
+ }
+ }
+
+ public virtual TableItemStyle FooterStyle
+ {
+ get
+ {
+ if(footerStyle == null)
+ {
+ footerStyle = new TableItemStyle();
+ if(IsTrackingViewState)
+ {
+ footerStyle.TrackViewState();
+ }
+ }
+ return footerStyle;
+ }
+ }
+
+ public virtual TableItemStyle HeaderStyle
+ {
+ get
+ {
+ if(headerStyle == null)
+ {
+ headerStyle= new TableItemStyle();
+ if(IsTrackingViewState)
+ {
+ headerStyle.TrackViewState();
+ }
+ }
+ return headerStyle;
+ }
+ }
+
+ public virtual TableItemStyle ItemStyle
+ {
+ get
+ {
+ if(itemStyle == null)
+ {
+ itemStyle = new TableItemStyle();
+ if(IsTrackingViewState)
+ {
+ itemStyle.TrackViewState();
+ }
+ }
+ return itemStyle;
+ }
+ }
+
+ public virtual string FooterText
+ {
+ get
+ {
+ object o = ViewState["FooterText"];
+ if(o != null)
+ {
+ return (string)o;
+ }
+ return String.Empty;
+ }
+ set
+ {
+ ViewState["FooterText"] = value;
+ OnColumnChanged();
+ }
+ }
+
+ public virtual string HeaderImageUrl
+ {
+ get
+ {
+ object o = ViewState["HeaderImageUrl"];
+ if(o != null)
+ {
+ return (string)o;
+ }
+ return String.Empty;
+ }
+ set
+ {
+ ViewState["HeaderImageUrl"] = value;
+ OnColumnChanged();
+ }
+ }
+
+ public virtual string HeaderText
+ {
+ get
+ {
+ object o = ViewState["HeaderText"];
+ if(o != null)
+ {
+ return (string)o;
+ }
+ return String.Empty;
+ }
+ set
+ {
+ ViewState["HeaderText"] = value;
+ OnColumnChanged();
+ }
+ }
+
+ public virtual string SortExpression
+ {
+ get
+ {
+ object o = ViewState["SortExpression"];
+ if(o != null)
+ {
+ return (string)o;
+ }
+ return String.Empty;
+ }
+ set
+ {
+ ViewState["SortExpression"] = value;
+ OnColumnChanged();
+ }
+ }
+
+ public bool Visible
+ {
+ get
+ {
+ object o = ViewState["Visible"];
+ if(o != null)
+ {
+ return (bool)o;
+ }
+ return true;
+ }
+ set
+ {
+ ViewState["Visible"] = value;
+ OnColumnChanged();
+ }
+ }
+
+ public virtual void Initialize()
+ {
+ if(owner != null && owner.Site != null)
+ {
+ designMode = owner.Site.DesignMode;
+ }
+ }
+
+ public virtual void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)
+ {
+ switch(itemType)
+ {
+ case ListItemType.Header : InitializeCellHeader(cell, columnIndex);
+ break;
+ case ListItemType.Footer : InitializeCellFooter(cell, columnIndex);
+ break;
+ default : return;
+ }
+ }
+
+ private void InitializeCellHeader(TableCell cell, int columnIndex)
+ {
+ WebControl ctrl = null;
+ bool sort = true;
+ string sortExpr = "";
+ ImageButton headButton;
+ Image headImage;
+ LinkButtonInternal link;
+
+ if(owner != null)
+ {
+ sort = owner.AllowSorting;
+ }
+ if(sort)
+ {
+ sortExpr = SortExpression;
+ if(sortExpr.Length == 0)
+ {
+ sort = false;
+ }
+ }
+ if(HeaderImageUrl.Length > 0)
+ {
+ if(sort)
+ {
+ headButton = new ImageButton();
+ headButton.ImageUrl = HeaderImageUrl;
+ headButton.CommandName = "Sort";
+ headButton.CommandArgument = sortExpr;
+ headButton.CausesValidation = false;
+ ctrl = headButton;
+ } else
+ {
+ headImage = new Image();
+ headImage.ImageUrl = HeaderImageUrl;
+ ctrl = headImage;
+ }
+ } else
+ {
+ if(sort)
+ {
+ link = new LinkButtonInternal();
+ link.Text = HeaderText;
+ link.CommandName = "Sort";
+ link.CommandArgument = sortExpr;
+ link.CausesValidation = false;
+ ctrl = link;
+ } else
+ {
+ if(HeaderText.Length > 0)
+ {
+ cell.Text = HeaderText;
+ } else
+ {
+ cell.Text = " ";
+ }
+ }
+ }
+ if(ctrl != null)
+ {
+ cell.Controls.Add(ctrl);
+ }
+ }
+
+ private void InitializeCellFooter(TableCell cell, int columnIndex)
+ {
+ cell.Text = (FooterText.Length > 0 ? FooterText : " ");
+ }
+
+ public override string ToString()
+ {
+ return String.Empty;
+ }
+
+ protected bool DesignMode
+ {
+ get
+ {
+ return designMode;
+ }
+ }
+
+ protected DataGrid Owner
+ {
+ get
+ {
+ return owner;
+ }
+ }
+
+ protected StateBag ViewState
+ {
+ get
+ {
+ return viewState;
+ }
+ }
+
+ /// <summary>
+ /// Undocumented
+ /// </summary>
+ protected virtual void OnColumnChanged()
+ {
+ if(owner != null)
+ {
+ owner.OnColumnsChanged();
+ }
+ }
+
+ internal void SetOwner (DataGrid datagrid)
+ {
+ owner = datagrid;
+ }
+
+ protected virtual object SaveViewState()
+ {
+ object[] states = new object[4];
+ states[0] = ViewState.SaveViewState();
+ states[1] = (footerStyle == null ? null : footerStyle.SaveViewState());
+ states[2] = (headerStyle == null ? null : headerStyle.SaveViewState());
+ states[3] = (itemStyle == null ? null : itemStyle.SaveViewState());
+ return states;
+ }
+
+ protected virtual void LoadViewState(object savedState)
+ {
+ if(savedState!= null)
+ {
+ object[] states = (object[]) savedState;
+ if(states != null)
+ {
+ ViewState.LoadViewState(states[0]);
+ FooterStyle.LoadViewState(states[1]);
+ HeaderStyle.LoadViewState(states[2]);
+ ItemStyle.LoadViewState(states[3]);
+ }
+ }
+ }
+
+ protected virtual void TrackViewState()
+ {
+ marked = true;
+ ViewState.TrackViewState();
+ if(footerStyle != null)
+ {
+ footerStyle.TrackViewState();
+ }
+ if(headerStyle != null)
+ {
+ headerStyle.TrackViewState();
+ }
+ if(itemStyle != null)
+ {
+ itemStyle.TrackViewState();
+ }
+ }
+
+ protected bool IsTrackingViewState
+ {
+ get
+ {
+ return marked;
+ }
+ }
+
+ void IStateManager.LoadViewState(object savedState)
+ {
+ LoadViewState(savedState);
+ }
+
+ object IStateManager.SaveViewState()
+ {
+ return SaveViewState();
+ }
+
+ void IStateManager.TrackViewState()
+ {
+ TrackViewState();
+ }
+
+ bool IStateManager.IsTrackingViewState
+ {
+ get
+ {
+ return IsTrackingViewState;
+ }
+ }
+ }
+}