-
+//
+// System.Web.UI.WebControls.DataGridColumnCollection
+//
+// Authors:
+// Ben Maurer (bmaurer@novell.com)
+//
+// (C) 2005 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-/**\r
- * Namespace: System.Web.UI.WebControls\r
- * Class: DataGridColumnCollection\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: ??%\r
- *\r
- * (C) Gaurav Vaish (2002)\r
- */\r
-\r
-using System;
-using System.ComponentModel;\r
-using System.Collections;\r
-using System.Web;\r
-using System.Web.UI;\r
-\r
-namespace System.Web.UI.WebControls\r
-{\r
- public sealed class DataGridColumnCollection : ICollection, IEnumerable, IStateManager\r
- {\r
- private DataGrid owner;\r
- private ArrayList columns;\r
- private bool trackViewState;\r
-\r
- public DataGridColumnCollection(DataGrid owner, ArrayList columns)\r
- {\r
- this.owner = owner;\r
- this.columns = columns;\r
- }\r
- [Browsable (false)]\r
- public int Count\r
- {\r
- get\r
- {\r
- return columns.Count;\r
- }\r
- }\r
+using System.Collections;
+using System.ComponentModel;
- [Browsable (false)]\r
- public bool IsReadOnly\r
- {\r
- get\r
- {\r
- return false;\r
- }\r
- }\r
+namespace System.Web.UI.WebControls {
+ public sealed class DataGridColumnCollection : ICollection, IStateManager {
+ public DataGridColumnCollection (DataGrid owner, ArrayList columns)
+ {
+ this.owner = owner;
+ this.columns = columns;
+ }
+
+
+ public void Add (DataGridColumn column)
+ {
+ columns.Add (column);
+ column.Set_Owner (owner);
+ if (track)
+ ((IStateManager) column).TrackViewState ();
+ }
+
+ public void AddAt (int index, DataGridColumn column)
+ {
+ columns.Insert (index, column);
+ column.Set_Owner (owner);
+ if (track)
+ ((IStateManager) column).TrackViewState ();
+ }
+
+ public void Clear ()
+ {
+ columns.Clear ();
+ }
+
+ public void CopyTo (Array array, int index)
+ {
+ columns.CopyTo (array, index);
+ }
+
+ public IEnumerator GetEnumerator ()
+ {
+ return columns.GetEnumerator ();
+ }
+
+ public int IndexOf (DataGridColumn column)
+ {
+ return columns.IndexOf (column);
+ }
- [Browsable (false)]\r
- public bool IsSynchronized\r
- {\r
- get\r
- {\r
- return false;\r
- }\r
- }\r
+ [Obsolete ("figure out what you need with me")]
+ internal void OnColumnsChanged ()
+ {
+ // Do something
+ }
+
+ public void Remove (DataGridColumn column)
+ {
+ columns.Remove (column);
+ }
+
+ public void RemoveAt (int index)
+ {
+ columns.RemoveAt (index);
+ }
+
+ void System.Web.UI.IStateManager.LoadViewState (object savedState)
+ {
+ object [] o = (object []) savedState;
+ if (o == null)
+ return;
- [Browsable (false)]\r
- public DataGridColumn this[int index]\r
- {\r
- get\r
- {\r
- return (DataGridColumn)(columns[index]);\r
- }\r
- }\r
+ int i = 0;
+ foreach (IStateManager ism in this)
+ ism.LoadViewState (o [i++]);
+ }
+
+ object System.Web.UI.IStateManager.SaveViewState ()
+ {
+ object [] o = new object [Count];
- [Browsable (false)]\r
- public object SyncRoot\r
- {\r
- get\r
- {\r
- return this;\r
- }\r
- }\r
-\r
- public void Add(DataGridColumn column)\r
- {\r
- AddAt(-1, column);\r
- }\r
-\r
- public void AddAt(int index, DataGridColumn column)\r
- {\r
- if(index == -1)\r
- {\r
- columns.Add(column);\r
- } else\r
- {\r
- columns.Insert(index, column);\r
- }\r
-\r
- column.SetOwner (owner);\r
- if(trackViewState)\r
- {\r
- ((IStateManager)column).TrackViewState();\r
- }\r
- OnColumnsChanged();\r
- }\r
-\r
- internal void OnColumnsChanged()\r
- {\r
- if(owner != null)\r
- {\r
- owner.OnColumnsChanged();\r
- }\r
- }\r
-\r
- public void Clear()\r
- {\r
- columns.Clear();\r
- OnColumnsChanged();\r
- }\r
-\r
- public void CopyTo(Array array, int index)\r
- {\r
- foreach(DataGridColumn current in this)\r
- {\r
- array.SetValue(current, index++);\r
- }\r
- }\r
-\r
- public IEnumerator GetEnumerator()\r
- {\r
- return columns.GetEnumerator();\r
- }\r
-\r
- public int IndexOf(DataGridColumn column)\r
- {\r
- if(column != null)\r
- {\r
- return columns.IndexOf(column);\r
- }\r
- return -1;\r
- }\r
-\r
- public void Remove(DataGridColumn column)\r
- {\r
- if(column != null)\r
- {\r
- RemoveAt(IndexOf(column));\r
- }\r
- }\r
-\r
- public void RemoveAt(int index)\r
- {\r
- if(index >= 0 && index < columns.Count)\r
- {\r
- columns.RemoveAt(index);\r
- OnColumnsChanged();\r
- return;\r
- }\r
- //This exception is not documented, but thrown\r
- throw new ArgumentOutOfRangeException("string");\r
- }\r
-\r
- object IStateManager.SaveViewState()\r
- {\r
- if (columns.Count == 0)\r
- return null;\r
-\r
- ArrayList retVal = new ArrayList (columns.Count);
- bool found = false;\r
- foreach (IStateManager current in columns) {
- object o = current.SaveViewState ();\r
- retVal.Add (o);
- if (o != null)
- found = true;
- }\r
-\r
- if (!found)
- return null;
-
- return retVal;\r
- }\r
-\r
- void IStateManager.LoadViewState(object savedState)\r
- {\r
- if (savedState == null || !(savedState is ArrayList))\r
- return;\r
-\r
- ArrayList list = (ArrayList) savedState;\r
- int end = list.Count;\r
- if (end != columns.Count)\r
- return;\r
-\r
- for (int i = 0; i < end; i++) {\r
- IStateManager col = (IStateManager) columns [i];\r
- col.LoadViewState (list [i]);\r
- }\r
- }\r
+ int i = 0;
+ foreach (IStateManager ism in this)
+ o [i++] = ism.SaveViewState ();
- void IStateManager.TrackViewState()
+ foreach (object a in o)
+ if (a != null)
+ return o;
+ return null;
+ }
+
+ void System.Web.UI.IStateManager.TrackViewState ()
{
- trackViewState = true;
- foreach (IStateManager col in columns)
- col.TrackViewState ();
+ track = true;
+ foreach (IStateManager ism in this)
+ ism.TrackViewState ();
}
- bool IStateManager.IsTrackingViewState\r
- {\r
- get\r
- {\r
- return trackViewState;\r
- }\r
- }\r
- }\r
-}\r
+ [Browsable(false)]
+ public int Count {
+ get { return columns.Count; }
+ }
+
+ bool IStateManager.IsTrackingViewState {
+ get { return track; }
+ }
+
+ [Browsable(false)]
+ public bool IsReadOnly {
+ get { return columns.IsReadOnly; }
+ }
+
+ [Browsable(false)]
+ public bool IsSynchronized {
+ get { return columns.IsSynchronized; }
+ }
+
+ [Browsable(false)]
+ public DataGridColumn this [int index] {
+ get { return (DataGridColumn) columns [index]; }
+ }
+
+ [Browsable(false)]
+ public object SyncRoot {
+ get { return columns.SyncRoot; }
+ }
+
+ DataGrid owner;
+ ArrayList columns;
+ bool track;
+ }
+}