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.Collections;
\r
17 using System.Web.UI;
\r
19 namespace System.Web.UI.WebControls
\r
21 public sealed class DataGridColumnCollection : ICollection, IEnumerable, IStateManager
\r
23 private DataGrid owner;
\r
24 private ArrayList columns;
\r
25 private bool trackViewState = false;
\r
27 public DataGridColumnCollection(DataGrid owner, ArrayList columns)
\r
30 this.columns = columns;
\r
37 return columns.Count;
\r
41 public bool IsReadOnly
\r
49 public bool IsSynchronized
\r
57 public DataGridColumn this[int index]
\r
61 return (DataGridColumn)(columns[index]);
\r
65 public object SyncRoot
\r
73 public void Add(DataGridColumn column)
\r
78 public void AddAt(int index, DataGridColumn column)
\r
82 columns.Add(column);
\r
85 columns.Insert(index, column);
\r
88 column.SetOwner (owner);
\r
91 ((IStateManager)column).TrackViewState();
\r
96 internal void OnColumnsChanged()
\r
100 owner.OnColumnsChanged();
\r
104 public void Clear()
\r
107 OnColumnsChanged();
\r
110 public void CopyTo(Array array, int index)
\r
112 foreach(DataGridColumn current in this)
\r
114 array.SetValue(current, index++);
\r
118 public IEnumerator GetEnumerator()
\r
120 return columns.GetEnumerator();
\r
123 public int IndexOf(DataGridColumn column)
\r
127 return columns.IndexOf(column);
\r
132 public void Remove(DataGridColumn column)
\r
136 RemoveAt(IndexOf(column));
\r
140 public void RemoveAt(int index)
\r
142 if(index >= 0 && index < columns.Count)
\r
144 columns.RemoveAt(index);
\r
145 OnColumnsChanged();
\r
148 //This exception is not documented, but thrown
\r
149 throw new ArgumentOutOfRangeException("string");
\r
152 object IStateManager.SaveViewState()
\r
154 if (columns.Count == 0)
\r
157 ArrayList retVal = new ArrayList (columns.Count);
\r
158 foreach (IStateManager current in columns)
\r
159 retVal.Add (current.SaveViewState ());
\r
164 void IStateManager.LoadViewState(object savedState)
\r
166 if (savedState == null || !(savedState is ArrayList))
\r
169 ArrayList list = (ArrayList) savedState;
\r
170 int end = list.Count;
\r
171 if (end != columns.Count)
\r
174 for (int i = 0; i < end; i++) {
\r
175 IStateManager col = (IStateManager) columns [i];
\r
176 col.LoadViewState (list [i]);
\r
180 void IStateManager.TrackViewState()
\r
182 trackViewState = true;
\r
185 bool IStateManager.IsTrackingViewState
\r
189 return trackViewState;
\r