Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / WebControls / TreeNodeBindingCollection.cs / 1 / TreeNodeBindingCollection.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.ComponentModel;
using System.Security.Permissions;
using System.Web;
///
/// Provides a collection of TreeNodeBinding objects
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public sealed class TreeNodeBindingCollection : StateManagedCollection {
private static readonly Type[] knownTypes = new Type[] { typeof(TreeNodeBinding) };
private TreeNodeBinding _defaultBinding;
internal TreeNodeBindingCollection() {
}
///
/// Gets the TreeNodeBinding at the specified index
///
public TreeNodeBinding this[int i] {
get {
return (TreeNodeBinding)((IList)this)[i];
}
set {
((IList)this)[i] = value;
}
}
///
/// Adds a TreeNodeBinding to the collection
///
public int Add(TreeNodeBinding binding) {
return ((IList)this).Add(binding);
}
public bool Contains(TreeNodeBinding binding) {
return ((IList)this).Contains(binding);
}
public void CopyTo(TreeNodeBinding[] bindingArray, int index) {
base.CopyTo(bindingArray, index);
}
protected override object CreateKnownType(int index) {
return new TreeNodeBinding();
}
private void FindDefaultBinding() {
_defaultBinding = null;
// Look for another binding that would be a good default
foreach (TreeNodeBinding binding in this) {
if (binding.Depth == -1 && binding.DataMember.Length == 0) {
_defaultBinding = binding;
break;
}
}
}
///
/// Gets a TreeNodeBinding data binding definition for the specified depth or datamember
///
internal TreeNodeBinding GetBinding(string dataMember, int depth) {
TreeNodeBinding bestMatch = null;
int match = 0;
if ((dataMember != null) && (dataMember.Length == 0)) {
dataMember = null;
}
foreach (TreeNodeBinding binding in this) {
if ((binding.Depth == depth)) {
if (String.Equals(binding.DataMember, dataMember, StringComparison.CurrentCultureIgnoreCase)) {
return binding;
}
else if ((match < 1) && (binding.DataMember.Length == 0)) {
bestMatch = binding;
match = 1;
}
}
else if (String.Equals(binding.DataMember, dataMember, StringComparison.CurrentCultureIgnoreCase) &&
(match < 2) &&
(binding.Depth == -1)) {
bestMatch = binding;
match = 2;
}
}
if (bestMatch == null) {
// Check that the default binding is still suitable (VSWhidbey 358817)
if (_defaultBinding != null) {
if (_defaultBinding.Depth != -1 || _defaultBinding.DataMember.Length != 0) {
// Look for another binding that would be a good default
FindDefaultBinding();
}
bestMatch = _defaultBinding;
}
}
return bestMatch;
}
protected override Type[] GetKnownTypes() {
return knownTypes;
}
public int IndexOf(TreeNodeBinding binding) {
return ((IList)this).IndexOf(binding);
}
public void Insert(int index, TreeNodeBinding binding) {
((IList)this).Insert(index, binding);
}
protected override void OnClear() {
base.OnClear();
_defaultBinding = null;
}
protected override void OnRemoveComplete(int index, object value) {
if (value == _defaultBinding) {
FindDefaultBinding();
}
}
protected override void OnValidate(object value) {
base.OnValidate(value);
TreeNodeBinding binding = value as TreeNodeBinding;
if ((binding != null) && (binding.DataMember.Length == 0) && (binding.Depth == -1)) {
_defaultBinding = binding;
}
}
///
/// Removes a TreeNodeBinding from the collection.
///
public void Remove(TreeNodeBinding binding) {
((IList)this).Remove(binding);
}
///
/// Removes a TreeNodeBinding from the collection at a given index.
///
public void RemoveAt(int index) {
((IList)this).RemoveAt(index);
}
protected override void SetDirtyObject(object o) {
if (o is TreeNodeBinding) {
((TreeNodeBinding)o).SetDirty();
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DrawListViewColumnHeaderEventArgs.cs
- ShimAsPublicXamlType.cs
- CodeNamespaceImportCollection.cs
- SingleObjectCollection.cs
- RequestBringIntoViewEventArgs.cs
- SoundPlayer.cs
- FunctionParameter.cs
- ExceptionUtility.cs
- Converter.cs
- CryptoProvider.cs
- LeftCellWrapper.cs
- OrderingInfo.cs
- DesignerDataRelationship.cs
- Gdiplus.cs
- RowTypeElement.cs
- InkSerializer.cs
- TabPanel.cs
- State.cs
- Stylus.cs
- FileSystemEnumerable.cs
- CodeTypeDeclarationCollection.cs
- DateTimeConstantAttribute.cs
- FontCacheUtil.cs
- PlacementWorkspace.cs
- TextWriterTraceListener.cs
- SaveFileDialog.cs
- SwitchLevelAttribute.cs
- RepeatBehavior.cs
- ToolStripSeparator.cs
- RemotingServices.cs
- LinearGradientBrush.cs
- ToolboxItemLoader.cs
- MSG.cs
- ProfileGroupSettingsCollection.cs
- TextEffect.cs
- SimpleWebHandlerParser.cs
- BlurBitmapEffect.cs
- XmlWrappingReader.cs
- CodeChecksumPragma.cs
- ToolStripItemRenderEventArgs.cs
- GeneratedContractType.cs
- CriticalHandle.cs
- DbExpressionRules.cs
- GridViewSortEventArgs.cs
- CompareInfo.cs
- ProtocolViolationException.cs
- BuiltInExpr.cs
- ContentDefinition.cs
- CatchDesigner.xaml.cs
- AssemblyBuilder.cs
- codemethodreferenceexpression.cs
- ScriptIgnoreAttribute.cs
- DiscoveryDocumentSearchPattern.cs
- securitymgrsite.cs
- SettingsPropertyWrongTypeException.cs
- XamlPoint3DCollectionSerializer.cs
- SiteIdentityPermission.cs
- CompileXomlTask.cs
- ImageKeyConverter.cs
- FastEncoderStatics.cs
- NavigationCommands.cs
- UpdateTracker.cs
- BrushMappingModeValidation.cs
- Coordinator.cs
- OperatingSystemVersionCheck.cs
- ObjectDisposedException.cs
- ExpressionConverter.cs
- TaskExtensions.cs
- LicenseManager.cs
- ErrorInfoXmlDocument.cs
- PowerEase.cs
- ReferenceAssemblyAttribute.cs
- DataBindingExpressionBuilder.cs
- Baml2006ReaderFrame.cs
- ColumnHeader.cs
- SortExpressionBuilder.cs
- AsyncDataRequest.cs
- XmlSchemaComplexContent.cs
- Debugger.cs
- TreeNodeBinding.cs
- CommonGetThemePartSize.cs
- KeyboardEventArgs.cs
- SqlTriggerAttribute.cs
- ChtmlTextWriter.cs
- BindingWorker.cs
- HtmlTable.cs
- TextBoxAutomationPeer.cs
- QilSortKey.cs
- Size3DConverter.cs
- Event.cs
- DataRowView.cs
- HtmlToClrEventProxy.cs
- regiisutil.cs
- RootNamespaceAttribute.cs
- WebPartUserCapability.cs
- SourceItem.cs
- FlowNode.cs
- DivideByZeroException.cs
- ExtendedPropertyCollection.cs
- ControlCollection.cs