Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / WebControls / CompositeDataBoundControl.cs / 1 / 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) {
object[] dummyDataSource = new object[(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;
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SoapReflectionImporter.cs
- ListView.cs
- NoPersistScope.cs
- AnimatedTypeHelpers.cs
- DataGridViewEditingControlShowingEventArgs.cs
- XPathExpr.cs
- HtmlTableCell.cs
- GeneralTransformCollection.cs
- COAUTHIDENTITY.cs
- webbrowsersite.cs
- CompositeCollection.cs
- DesignerSerializerAttribute.cs
- AuthenticationServiceManager.cs
- FontFamily.cs
- Visual3D.cs
- ActivitySurrogate.cs
- ProviderUtil.cs
- ThicknessConverter.cs
- FormsAuthenticationModule.cs
- TextPointerBase.cs
- EventMappingSettings.cs
- CodeComment.cs
- ServiceObjectContainer.cs
- Slider.cs
- TagMapInfo.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- Subordinate.cs
- VoiceInfo.cs
- QuaternionConverter.cs
- PageStatePersister.cs
- HtmlTitle.cs
- CodeDomComponentSerializationService.cs
- VirtualizingPanel.cs
- Model3DGroup.cs
- Pair.cs
- TriggerCollection.cs
- EventMappingSettingsCollection.cs
- PingOptions.cs
- PeerChannelFactory.cs
- SizeIndependentAnimationStorage.cs
- WebPartDescription.cs
- ControlDesigner.cs
- ToolStripPanelSelectionGlyph.cs
- MessageAction.cs
- StateBag.cs
- VisualBasicReference.cs
- NaturalLanguageHyphenator.cs
- RemoteWebConfigurationHostStream.cs
- ModelPerspective.cs
- CommonDialog.cs
- ConfigUtil.cs
- XmlNullResolver.cs
- SpeakCompletedEventArgs.cs
- SingleStorage.cs
- MenuBase.cs
- TemplatedMailWebEventProvider.cs
- WorkflowEnvironment.cs
- EmissiveMaterial.cs
- DependencyPropertyConverter.cs
- Matrix3DValueSerializer.cs
- SQLMembershipProvider.cs
- HyperLinkStyle.cs
- RectangleHotSpot.cs
- RuleProcessor.cs
- KeyValueSerializer.cs
- SafeFileMapViewHandle.cs
- Emitter.cs
- XmlSerializationWriter.cs
- IxmlLineInfo.cs
- BuildManagerHost.cs
- precedingquery.cs
- AsyncCompletedEventArgs.cs
- CustomCategoryAttribute.cs
- ArrayWithOffset.cs
- TrackingDataItem.cs
- SynchronizingStream.cs
- ArraySet.cs
- VoiceSynthesis.cs
- ButtonChrome.cs
- DataSetFieldSchema.cs
- IntPtr.cs
- ServiceOperationHelpers.cs
- DrawingServices.cs
- UTF32Encoding.cs
- CacheVirtualItemsEvent.cs
- ObjRef.cs
- PeerResolverSettings.cs
- Focus.cs
- SequentialActivityDesigner.cs
- SecurityChannelFactory.cs
- QueryableFilterUserControl.cs
- ExtenderProviderService.cs
- XmlDataSource.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- DynamicValueConverter.cs
- StatusStrip.cs
- ReadOnlyDictionary.cs
- DefaultValueMapping.cs
- MenuAutomationPeer.cs
- FileDialogPermission.cs