2 * Namespace: System.Web.UI.WebControls
\r
3 * Class: DataGridColumnCollection
\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 * Implementation: yes
\r
11 * (C) Gaurav Vaish (2002)
\r
15 using System.ComponentModel;
\r
16 using System.Collections;
\r
18 using System.Web.UI;
\r
20 namespace System.Web.UI.WebControls
\r
22 public sealed class DataGridColumnCollection : ICollection, IEnumerable, IStateManager
\r
24 private DataGrid owner;
\r
25 private ArrayList columns;
\r
26 private bool trackViewState;
\r
28 public DataGridColumnCollection(DataGrid owner, ArrayList columns)
\r
31 this.columns = columns;
\r
39 return columns.Count;
\r
44 public bool IsReadOnly
\r
53 public bool IsSynchronized
\r
62 public DataGridColumn this[int index]
\r
66 return (DataGridColumn)(columns[index]);
\r
71 public object SyncRoot
\r
79 public void Add(DataGridColumn column)
\r
84 public void AddAt(int index, DataGridColumn column)
\r
88 columns.Add(column);
\r
91 columns.Insert(index, column);
\r
94 column.SetOwner (owner);
\r
97 ((IStateManager)column).TrackViewState();
\r
102 internal void OnColumnsChanged()
\r
106 owner.OnColumnsChanged();
\r
110 public void Clear()
\r
113 OnColumnsChanged();
\r
116 public void CopyTo(Array array, int index)
\r
118 foreach(DataGridColumn current in this)
\r
120 array.SetValue(current, index++);
\r
124 public IEnumerator GetEnumerator()
\r
126 return columns.GetEnumerator();
\r
129 public int IndexOf(DataGridColumn column)
\r
133 return columns.IndexOf(column);
\r
138 public void Remove(DataGridColumn column)
\r
142 RemoveAt(IndexOf(column));
\r
146 public void RemoveAt(int index)
\r
148 if(index >= 0 && index < columns.Count)
\r
150 columns.RemoveAt(index);
\r
151 OnColumnsChanged();
\r
154 //This exception is not documented, but thrown
\r
155 throw new ArgumentOutOfRangeException("string");
\r
158 object IStateManager.SaveViewState()
\r
160 if (columns.Count == 0)
\r
163 ArrayList retVal = new ArrayList (columns.Count);
164 bool found = false;
\r
165 foreach (IStateManager current in columns) {
166 object o = current.SaveViewState ();
\r
178 void IStateManager.LoadViewState(object savedState)
\r
180 if (savedState == null || !(savedState is ArrayList))
\r
183 ArrayList list = (ArrayList) savedState;
\r
184 int end = list.Count;
\r
185 if (end != columns.Count)
\r
188 for (int i = 0; i < end; i++) {
\r
189 IStateManager col = (IStateManager) columns [i];
\r
190 col.LoadViewState (list [i]);
\r
194 void IStateManager.TrackViewState()
196 trackViewState = true;
197 foreach (IStateManager col in columns)
198 col.TrackViewState ();
201 bool IStateManager.IsTrackingViewState
\r
205 return trackViewState;
\r