Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / WebControls / ListItemCollection.cs / 1 / ListItemCollection.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing.Design;
using System.Security.Permissions;
///
/// Encapsulates the items within a .
/// This class cannot be inherited.
///
[
Editor("System.Web.UI.Design.WebControls.ListItemsCollectionEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor))
]
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public sealed class ListItemCollection : ICollection, IList, IStateManager {
private ArrayList listItems;
private bool marked;
private bool saveAll;
///
/// Initializes a new instance of the
/// class.
///
public ListItemCollection() {
listItems = new ArrayList();
marked = false;
saveAll = false;
}
///
/// Gets a referenced by the specified ordinal
/// index value.
///
public ListItem this[int index] {
get {
return (ListItem)listItems[index];
}
}
///
object IList.this[int index] {
get {
return listItems[index];
}
set {
listItems[index] = (ListItem)value;
}
}
public int Capacity {
get {
return listItems.Capacity;
}
set {
listItems.Capacity = value;
}
}
///
/// Gets the item count of the collection.
///
public int Count {
get {
return listItems.Count;
}
}
///
/// Adds the specified item to the end of the collection.
///
public void Add(string item) {
Add(new ListItem(item));
}
///
/// Adds the specified to the end of the collection.
///
public void Add(ListItem item) {
listItems.Add(item);
if (marked) {
item.Dirty = true;
}
}
///
int IList.Add(object item) {
ListItem newItem = (ListItem) item;
int returnValue = listItems.Add(newItem);
if (marked) {
newItem.Dirty = true;
}
return returnValue;
}
///
///
public void AddRange(ListItem[] items) {
if (items == null) {
throw new ArgumentNullException("items");
}
foreach(ListItem item in items) {
Add(item);
}
}
///
/// Removes all controls from the collection.
///
public void Clear() {
listItems.Clear();
if (marked)
saveAll = true;
}
///
/// Returns a value indicating whether the
/// collection contains the specified item.
///
public bool Contains(ListItem item) {
return listItems.Contains(item);
}
///
bool IList.Contains(object item) {
return Contains((ListItem) item);
}
///
/// Copies contents from the collection to a specified with a
/// specified starting index.
///
public void CopyTo(Array array, int index) {
listItems.CopyTo(array,index);
}
public ListItem FindByText(string text) {
int index = FindByTextInternal(text, true);
if (index != -1) {
return (ListItem)listItems[index];
}
return null;
}
internal int FindByTextInternal(string text, bool includeDisabled) {
int i = 0;
foreach (ListItem item in listItems) {
if (item.Text.Equals(text) && (includeDisabled || item.Enabled)) {
return i;
}
i++;
}
return -1;
}
public ListItem FindByValue(string value) {
int index = FindByValueInternal(value, true);
if (index != -1) {
return (ListItem)listItems[index];
}
return null;
}
internal int FindByValueInternal(string value, bool includeDisabled) {
int i = 0;
foreach (ListItem item in listItems) {
if (item.Value.Equals(value) && (includeDisabled || item.Enabled)) {
return i;
}
i++;
}
return -1;
}
///
/// Returns an enumerator of all controls within the
/// collection.
///
public IEnumerator GetEnumerator() {
return listItems.GetEnumerator();
}
///
/// Returns an ordinal index value that represents the
/// position of the specified within the collection.
///
public int IndexOf(ListItem item) {
return listItems.IndexOf(item);
}
///
int IList.IndexOf(object item) {
return IndexOf((ListItem) item);
}
///
/// Adds the specified item to the collection at the specified index
/// location.
///
public void Insert(int index,string item) {
Insert(index,new ListItem(item));
}
///
/// Inserts the specified to the collection at the specified
/// index location.
///
public void Insert(int index,ListItem item) {
listItems.Insert(index,item);
if (marked)
saveAll = true;
}
///
void IList.Insert(int index, object item) {
Insert(index, (ListItem) item);
}
///
bool IList.IsFixedSize {
get {
return false;
}
}
///
/// Gets a value indicating whether the collection is read-only.
///
public bool IsReadOnly {
get { return listItems.IsReadOnly; }
}
///
/// Gets a value indicating whether access to the collection is synchronized
/// (thread-safe).
///
public bool IsSynchronized {
get { return listItems.IsSynchronized; }
}
///
/// Removes the from the collection at the specified
/// index location.
///
public void RemoveAt(int index) {
listItems.RemoveAt(index);
if (marked)
saveAll = true;
}
///
/// Removes the specified item from the collection.
///
public void Remove(string item) {
int index = IndexOf(new ListItem(item));
if (index >= 0) {
RemoveAt(index);
}
}
///
/// Removes the specified from the collection.
///
public void Remove(ListItem item) {
int index = IndexOf(item);
if (index >= 0) {
RemoveAt(index);
}
}
///
void IList.Remove(object item) {
Remove((ListItem) item);
}
///
/// Gets the object that can be used to synchronize access to the collection. In
/// this case, it is the collection itself.
///
public object SyncRoot {
get { return this; }
}
///
///
/// Return true if tracking state changes.
/// Method of private interface, IStateManager.
///
bool IStateManager.IsTrackingViewState {
get {
return marked;
}
}
///
void IStateManager.LoadViewState(object state) {
LoadViewState(state);
}
internal void LoadViewState(object state) {
if (state != null) {
if (state is Pair) {
// only changed items were saved
Pair p = (Pair) state;
ArrayList indices = (ArrayList) p.First;
ArrayList items = (ArrayList) p.Second;
for (int i=0; i
void IStateManager.TrackViewState() {
TrackViewState();
}
internal void TrackViewState() {
marked = true;
for (int i=0; i < Count; i++)
this[i].TrackViewState();
}
///
object IStateManager.SaveViewState() {
return SaveViewState();
}
internal object SaveViewState() {
if (saveAll == true) {
// save all items
int count = Count;
object[] texts = new string[count];
object[] values = new string[count];
bool[] enableds = new bool[count];
for (int i=0; i < count; i++) {
texts[i] = this[i].Text;
values[i] = this[i].Value;
enableds[i] = this[i].Enabled;
}
return new Triplet(texts, values, enableds);
}
else {
// save only the changed items
ArrayList indices = new ArrayList(4);
ArrayList items = new ArrayList(4);
for (int i=0; i < Count; i++) {
object item = this[i].SaveViewState();
if (item != null) {
indices.Add(i);
items.Add(item);
}
}
if (indices.Count > 0)
return new Pair(indices, items);
return null;
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TraceRecord.cs
- EntityFrameworkVersions.cs
- SortedList.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- DefaultBindingPropertyAttribute.cs
- WebPartTransformerCollection.cs
- CompModSwitches.cs
- XMLDiffLoader.cs
- XsdDuration.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- ContextMarshalException.cs
- CharacterMetrics.cs
- AuthenticatingEventArgs.cs
- BindingExpression.cs
- BamlRecordWriter.cs
- DataGridColumn.cs
- Invariant.cs
- X509IssuerSerialKeyIdentifierClause.cs
- EncryptedXml.cs
- ConstructorNeedsTagAttribute.cs
- CapabilitiesAssignment.cs
- EntityDataSourceWizardForm.cs
- CharacterBuffer.cs
- SymbolMethod.cs
- RowToParametersTransformer.cs
- XPathDocumentBuilder.cs
- Rfc2898DeriveBytes.cs
- ProxyWebPartConnectionCollection.cs
- WindowsListViewSubItem.cs
- HttpCachePolicy.cs
- UriTemplateQueryValue.cs
- ErrorTableItemStyle.cs
- ToolStripDesignerUtils.cs
- CodeIdentifiers.cs
- DataViewSettingCollection.cs
- ReachSerializer.cs
- DiscoveryDocumentSearchPattern.cs
- _OverlappedAsyncResult.cs
- AssemblyCollection.cs
- ControllableStoryboardAction.cs
- SamlEvidence.cs
- HttpResponseHeader.cs
- SqlConnectionHelper.cs
- DescendantOverDescendantQuery.cs
- XmlSchemaFacet.cs
- ElementUtil.cs
- PbrsForward.cs
- FormsAuthenticationEventArgs.cs
- XmlName.cs
- DatePickerDateValidationErrorEventArgs.cs
- PrintPageEvent.cs
- DeflateStream.cs
- NamedPipeTransportBindingElement.cs
- WeakReferenceEnumerator.cs
- ExpandCollapsePattern.cs
- XmlWrappingReader.cs
- StrokeCollectionConverter.cs
- SystemNetHelpers.cs
- DataRowExtensions.cs
- SecurityDocument.cs
- AncillaryOps.cs
- SqlClientPermission.cs
- MemberRelationshipService.cs
- CreateUserErrorEventArgs.cs
- ObjectSelectorEditor.cs
- Walker.cs
- HijriCalendar.cs
- altserialization.cs
- WCFServiceClientProxyGenerator.cs
- DefaultObjectMappingItemCollection.cs
- DecryptRequest.cs
- BuildProvidersCompiler.cs
- AssemblyResolver.cs
- CommonEndpointBehaviorElement.cs
- SqlCacheDependencyDatabaseCollection.cs
- TextBox.cs
- CodeRemoveEventStatement.cs
- GenericPrincipal.cs
- WmlLinkAdapter.cs
- HtmlControlPersistable.cs
- OleDbTransaction.cs
- HostingEnvironment.cs
- InitiatorSessionSymmetricMessageSecurityProtocol.cs
- XpsS0ValidatingLoader.cs
- Point.cs
- AsyncCodeActivity.cs
- ProfileService.cs
- SamlSecurityToken.cs
- _OSSOCK.cs
- StructuredTypeEmitter.cs
- Help.cs
- DataSourceViewSchemaConverter.cs
- RuleValidation.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- CodeObjectCreateExpression.cs
- Tool.cs
- CodeGenHelper.cs
- PropertyItemInternal.cs
- FlatButtonAppearance.cs
- PartitionedStreamMerger.cs