--- /dev/null
+/**\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
--- /dev/null
+/**\r
+ * Namespace: System.Web.UI.WebControls\r
+ * Class: DataListItem\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: 95%\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 DataListItem : WebControl, INamingContainer\r
+ {\r
+ int itemIndex;\r
+ ListItemType itemType;\r
+ object dataItem;\r
+\r
+ public DataListItem(int itemIndex, ListItemType itemType)\r
+ {\r
+ this.itemIndex = itemIndex;\r
+ this.itemType = itemType;\r
+ }\r
+ \r
+ public virtual object DataItem\r
+ {\r
+ get\r
+ {\r
+ return dataItem;\r
+ }\r
+ set\r
+ {\r
+ dataItem = value;\r
+ }\r
+ }\r
+ \r
+ public virtual int ItemIndex\r
+ {\r
+ get\r
+ {\r
+ return itemIndex;\r
+ }\r
+ }\r
+ \r
+ public virtual ListItemType ItemType\r
+ {\r
+ get\r
+ {\r
+ return itemType;\r
+ }\r
+ }\r
+\r
+ [MonoTODO]\r
+ public virtual void RenderItem(HtmlTextWriter writer, bool extractRows, bool tableLayout)\r
+ {\r
+ //TODO: Complete me!\r
+ }\r
+ \r
+ protected override Style CreateControlStyle()\r
+ {\r
+ return new TableItemStyle();\r
+ }\r
+ \r
+ protected override bool OnBubbleEvent(object source, EventArgs e)\r
+ {\r
+ if(e is CommandEventArgs)\r
+ {\r
+ RaiseBubbleEvent(this, new DataListCommandEventArgs(this, source, (CommandEventArgs)e));\r
+ }\r
+ }\r
+ }\r
+}\r
--- /dev/null
+/**\r
+ * Namespace: System.Web.UI.WebControls\r
+ * Class: EditCommandColumn\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: 95%\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 EditCommandColumn : DataGridColumn\r
+ {\r
+ public EditCommandColumn(): base()\r
+ {\r
+ }\r
+ \r
+ public virtual ButtonColumnType ButtonType\r
+ {\r
+ get\r
+ {\r
+ object o = ViewState["ButtonType"];\r
+ if(o != null)\r
+ {\r
+ return (ButtonColumnType)o;\r
+ }\r
+ return ButtonColumnType.LinkButton;\r
+ }\r
+ set\r
+ {\r
+ if(!Enum.IsDefined(typeof(ButtonColumnType), value))\r
+ {\r
+ throw new ArgumentException();\r
+ }\r
+ ViewState["ButtonType"] = value;\r
+ OnColumnChanged();\r
+ }\r
+ }\r
+\r
+ public virtual string CancelText\r
+ {\r
+ get\r
+ {\r
+ object o = ViewState["CancelText"];\r
+ if(o != null)\r
+ {\r
+ return (string)o;\r
+ }\r
+ return String.Empty;\r
+ }\r
+ set\r
+ {\r
+ ViewState["CancelText"] = value;\r
+ OnColumnChanged();\r
+ }\r
+ }\r
+\r
+ public virtual string EditText\r
+ {\r
+ get\r
+ {\r
+ object o = ViewState["EditText"];\r
+ if(o != null)\r
+ {\r
+ return (string)o;\r
+ }\r
+ return String.Empty;\r
+ }\r
+ set\r
+ {\r
+ ViewState["EditText"] = value;\r
+ OnColumnChanged();\r
+ }\r
+ }\r
+\r
+ public virtual string UpdateText\r
+ {\r
+ get\r
+ {\r
+ object o = ViewState["UpdateText"];\r
+ if(o != null)\r
+ {\r
+ return (string)o;\r
+ }\r
+ return String.Empty;\r
+ }\r
+ set\r
+ {\r
+ ViewState["UpdateText"] = value;\r
+ OnColumnChanged();\r
+ }\r
+ }\r
+ \r
+ [MonoTODO]\r
+ public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)\r
+ {\r
+ base.InitializeCell(cell, columnIndex, itemType);\r
+ //TODO: I have to read some documents.\r
+ }\r
+ }\r
+}\r