Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebControls / CompositeDataBoundControl.cs / 2 / CompositeDataBoundControl.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.Security.Permissions;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public abstract class CompositeDataBoundControl : DataBoundControl, INamingContainer {
internal const string ItemCountViewStateKey = "_!ItemCount";
public override ControlCollection Controls {
get {
EnsureChildControls();
return base.Controls;
}
}
///
/// Overriden by DataBoundControl to determine if the control should
/// recreate its control hierarchy based on values in view state.
/// If the control hierarchy should be created, i.e. view state does
/// exist, it calls CreateChildControls with a dummy (empty) data source
/// which is usable for enumeration purposes only.
///
protected internal override void CreateChildControls() {
Controls.Clear();
object controlCount = ViewState[ItemCountViewStateKey];
if (controlCount == null && RequiresDataBinding) {
EnsureDataBound();
}
if (controlCount != null && ((int)controlCount) != -1) {
DummyDataSource dummyDataSource = new DummyDataSource((int)controlCount);
CreateChildControls(dummyDataSource, false);
ClearChildViewState();
}
}
///
/// Performs the work of creating the control hierarchy based on a data source.
/// When dataBinding is true, the specified data source contains real
/// data, and the data is supposed to be pushed into the UI.
/// When dataBinding is false, the specified data source is a dummy data
/// source, that allows enumerating the right number of items, but the items
/// themselves are null and do not contain data. In this case, the recreated
/// control hierarchy reinitializes its state from view state.
/// It enables a DataBoundControl to encapsulate the logic of creating its
/// control hierarchy in both modes into a single code path.
///
///
/// The data source to be used to enumerate items.
///
///
/// Whether the method has been called from DataBind or not.
///
///
/// The number of items created based on the data source. Put another way, its
/// the number of items enumerated from the data source.
///
protected abstract int CreateChildControls(IEnumerable dataSource,
bool dataBinding);
///
/// Overriden by DataBoundControl to use its properties to determine the real
/// data source that the control should bind to. It then clears the existing
/// control hierarchy, and calls createChildControls to create a new control
/// hierarchy based on the resolved data source.
/// The implementation resolves various data source related properties to
/// arrive at the appropriate IEnumerable implementation to use as the real
/// data source.
/// When resolving data sources, the DataSourceControlID takes highest precedence.
/// In this mode, DataMember is used to access the appropriate list from the
/// DataControl.
/// If DataSourceControlID is not set, the value of the DataSource property is used.
/// In this second alternative, DataMember is used to extract the appropriate
/// list if the control has been handed an IListSource as a data source.
///
protected internal override void PerformDataBinding(IEnumerable data) {
base.PerformDataBinding(data);
Controls.Clear();
ClearChildViewState();
TrackViewState();
int controlCount = CreateChildControls(data, true);
ChildControlsCreated = true;
ViewState[ItemCountViewStateKey] = controlCount;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- COM2EnumConverter.cs
- HyperLinkStyle.cs
- RecipientInfo.cs
- DecimalStorage.cs
- UpdateProgress.cs
- BaseCAMarshaler.cs
- WebPartAuthorizationEventArgs.cs
- ManipulationPivot.cs
- MatrixAnimationUsingPath.cs
- EncodingNLS.cs
- ArraySubsetEnumerator.cs
- RemoteWebConfigurationHostServer.cs
- HttpInputStream.cs
- BinHexEncoder.cs
- Events.cs
- StringTraceRecord.cs
- StringCollectionEditor.cs
- Int32CollectionValueSerializer.cs
- TableLayoutRowStyleCollection.cs
- ResourcePool.cs
- CompilerResults.cs
- JoinElimination.cs
- CollectionViewProxy.cs
- ColumnPropertiesGroup.cs
- PropVariant.cs
- EtwTrace.cs
- MobileErrorInfo.cs
- TemplateColumn.cs
- PeerNameRegistration.cs
- SecurityTokenValidationException.cs
- SqlProvider.cs
- BidOverLoads.cs
- HtmlFormAdapter.cs
- DateTimeConverter2.cs
- EntityClassGenerator.cs
- TreeNodeMouseHoverEvent.cs
- ButtonRenderer.cs
- IntAverageAggregationOperator.cs
- SqlNotificationEventArgs.cs
- FieldToken.cs
- EdmEntityTypeAttribute.cs
- EventLogPermissionEntry.cs
- CategoryGridEntry.cs
- LoginName.cs
- DynamicDataResources.Designer.cs
- PropertyDescriptor.cs
- XpsDocumentEvent.cs
- StoreContentChangedEventArgs.cs
- odbcmetadatafactory.cs
- QuaternionKeyFrameCollection.cs
- Semaphore.cs
- DependencyProperty.cs
- ListMarkerLine.cs
- ListBindableAttribute.cs
- BookmarkOptionsHelper.cs
- UnlockInstanceCommand.cs
- SmiGettersStream.cs
- SafeFindHandle.cs
- XPathSingletonIterator.cs
- PackagingUtilities.cs
- ComPlusDiagnosticTraceRecords.cs
- MiniParameterInfo.cs
- DataFormats.cs
- KeyGestureConverter.cs
- GeometryHitTestParameters.cs
- ShaderRenderModeValidation.cs
- hebrewshape.cs
- CfgRule.cs
- Version.cs
- ScrollItemProviderWrapper.cs
- MILUtilities.cs
- SQLStringStorage.cs
- OleDbConnectionFactory.cs
- CodeCommentStatement.cs
- FixedSOMLineRanges.cs
- DiffuseMaterial.cs
- SiteMapPathDesigner.cs
- MetabaseSettingsIis7.cs
- HostedHttpTransportManager.cs
- latinshape.cs
- BaseTemplateParser.cs
- DocumentViewerBase.cs
- PropertyGrid.cs
- SimpleHandlerBuildProvider.cs
- OrderedDictionary.cs
- TypeDependencyAttribute.cs
- SizeAnimation.cs
- RandomDelaySendsAsyncResult.cs
- MasterPageBuildProvider.cs
- NotifyCollectionChangedEventArgs.cs
- GradientBrush.cs
- KeyMatchBuilder.cs
- DrawingGroup.cs
- TimelineGroup.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- LambdaCompiler.Generated.cs
- AsymmetricAlgorithm.cs
- CallbackValidatorAttribute.cs
- SHA512Cng.cs
- DockPattern.cs