e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
216 lines
7.4 KiB
C#
216 lines
7.4 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="DataControlFieldCollection.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
namespace System.Web.UI.WebControls {
|
|
|
|
using System;
|
|
using System.Collections;
|
|
using System.ComponentModel;
|
|
|
|
/// <devdoc>
|
|
/// <para>Represents the collection of fields to be displayed in
|
|
/// a data bound control that uses fields.</para>
|
|
/// </devdoc>
|
|
public sealed class DataControlFieldCollection : StateManagedCollection {
|
|
|
|
private static readonly Type[] knownTypes = new Type[] {
|
|
typeof(BoundField),
|
|
typeof(ButtonField),
|
|
typeof(CheckBoxField),
|
|
typeof(CommandField),
|
|
typeof(HyperLinkField),
|
|
typeof(ImageField),
|
|
typeof(TemplateField)
|
|
};
|
|
|
|
|
|
public event EventHandler FieldsChanged;
|
|
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Gets a <see cref='System.Web.UI.WebControls.DataControlField'/> at the specified index in the
|
|
/// collection.</para>
|
|
/// </devdoc>
|
|
[
|
|
Browsable(false)
|
|
]
|
|
public DataControlField this[int index] {
|
|
get {
|
|
return ((IList)this)[index] as DataControlField;
|
|
}
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Appends a <see cref='System.Web.UI.WebControls.DataControlField'/> to the collection.</para>
|
|
/// </devdoc>
|
|
public void Add(DataControlField field) {
|
|
((IList)this).Add(field);
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// <para>Provides a deep copy of the collection. Used mainly by design time dialogs to implement "cancel" rollback behavior.</para>
|
|
/// </devdoc>
|
|
public DataControlFieldCollection CloneFields() {
|
|
DataControlFieldCollection fields = new DataControlFieldCollection();
|
|
foreach (DataControlField field in this) {
|
|
fields.Add(field.CloneField());
|
|
}
|
|
return fields;
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Returns whether a DataControlField is a member of the collection.</para>
|
|
/// </devdoc>
|
|
public bool Contains(DataControlField field) {
|
|
return ((IList)this).Contains(field);
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Copies the contents of the entire collection into an <see cref='System.Array' qualify='true'/> appending at
|
|
/// the specified index of the <see cref='System.Array' qualify='true'/>.</para>
|
|
/// </devdoc>
|
|
public void CopyTo(DataControlField[] array, int index) {
|
|
((IList)this).CopyTo(array, index);
|
|
return;
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Creates a known type of DataControlField.</para>
|
|
/// </devdoc>
|
|
protected override object CreateKnownType(int index) {
|
|
switch (index) {
|
|
case 0:
|
|
return new BoundField();
|
|
case 1:
|
|
return new ButtonField();
|
|
case 2:
|
|
return new CheckBoxField();
|
|
case 3:
|
|
return new CommandField();
|
|
case 4:
|
|
return new HyperLinkField();
|
|
case 5:
|
|
return new ImageField();
|
|
case 6:
|
|
return new TemplateField();
|
|
default:
|
|
throw new ArgumentOutOfRangeException(SR.GetString(SR.DataControlFieldCollection_InvalidTypeIndex));
|
|
}
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Returns an ArrayList of known DataControlField types.</para>
|
|
/// </devdoc>
|
|
protected override Type[] GetKnownTypes() {
|
|
return knownTypes;
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Returns the index of the first occurrence of a value in a <see cref='System.Web.UI.WebControls.DataControlField'/>.</para>
|
|
/// </devdoc>
|
|
public int IndexOf(DataControlField field) {
|
|
return ((IList)this).IndexOf(field);
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Inserts a <see cref='System.Web.UI.WebControls.DataControlField'/> to the collection
|
|
/// at the specified index.</para>
|
|
/// </devdoc>
|
|
public void Insert(int index, DataControlField field) {
|
|
((IList)this).Insert(index, field);
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// Called when the Clear() method is complete.
|
|
/// </devdoc>
|
|
protected override void OnClearComplete() {
|
|
OnFieldsChanged();
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// </devdoc>
|
|
void OnFieldChanged(object sender, EventArgs e) {
|
|
OnFieldsChanged();
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// </devdoc>
|
|
void OnFieldsChanged() {
|
|
if (FieldsChanged != null) {
|
|
FieldsChanged(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// Called when the Insert() method is complete.
|
|
/// </devdoc>
|
|
protected override void OnInsertComplete(int index, object value) {
|
|
DataControlField field = value as DataControlField;
|
|
if (field != null) {
|
|
field.FieldChanged += new EventHandler(OnFieldChanged);
|
|
}
|
|
OnFieldsChanged();
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// Called when the Remove() method is complete.
|
|
/// </devdoc>
|
|
protected override void OnRemoveComplete(int index, object value) {
|
|
DataControlField field = value as DataControlField;
|
|
if (field != null) {
|
|
field.FieldChanged -= new EventHandler(OnFieldChanged);
|
|
}
|
|
OnFieldsChanged();
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Validates that an object is a HotSpot.</para>
|
|
/// </devdoc>
|
|
protected override void OnValidate(object o) {
|
|
base.OnValidate(o);
|
|
if (!(o is DataControlField))
|
|
throw new ArgumentException(SR.GetString(SR.DataControlFieldCollection_InvalidType));
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Removes a <see cref='System.Web.UI.WebControls.DataControlField'/> from the collection at the specified
|
|
/// index.</para>
|
|
/// </devdoc>
|
|
public void RemoveAt(int index) {
|
|
((IList)this).RemoveAt(index);
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Removes the specified <see cref='System.Web.UI.WebControls.DataControlField'/> from the collection.</para>
|
|
/// </devdoc>
|
|
public void Remove(DataControlField field) {
|
|
((IList)this).Remove(field);
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// <para>Marks a DataControlField as dirty so that it will record its entire state into view state.</para>
|
|
/// </devdoc>
|
|
protected override void SetDirtyObject(object o) {
|
|
((DataControlField)o).SetDirty();
|
|
}
|
|
}
|
|
}
|