Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / UI / WebParts / WebPartZone.cs / 1 / WebPartZone.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls.WebParts {
using System;
using System.Collections;
using System.ComponentModel;
using System.Security.Permissions;
using System.Web.UI;
using System.Web.UI.WebControls;
///
/// Zone that hosts WebPart controls, and contains a template to specify the contained WebParts.
///
[
Designer("System.Web.UI.Design.WebControls.WebParts.WebPartZoneDesigner, " + AssemblyRef.SystemDesign),
SupportsEventValidation,
]
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class WebPartZone : WebPartZoneBase {
private ITemplate _zoneTemplate;
private bool _registrationComplete;
[
Browsable(false),
DefaultValue(null),
PersistenceMode(PersistenceMode.InnerProperty),
TemplateInstance(TemplateInstance.Single)
]
public virtual ITemplate ZoneTemplate {
get {
return _zoneTemplate;
}
set {
if (!DesignMode) {
if (_registrationComplete) {
throw new InvalidOperationException(SR.GetString(SR.WebPart_SetZoneTemplateTooLate));
}
}
_zoneTemplate = value;
}
}
private void AddWebPartToList(WebPartCollection webParts, Control control) {
WebPart part = control as WebPart;
// We used to throw an exception if the template contained a non-whitespace literal.
// However, sometimes Venus would insert
tags between the server controls
// in the template. So, we now just ignore all literals.
if ((part == null) && !(control is LiteralControl)) {
WebPartManager manager = WebPartManager;
if (manager != null) {
part = manager.CreateWebPart(control);
}
else {
part = WebPartManager.CreateWebPartStatic(control);
}
}
if (part != null) {
webParts.Add(part);
}
}
protected internal override WebPartCollection GetInitialWebParts() {
WebPartCollection webParts = new WebPartCollection();
if (ZoneTemplate != null) {
// PERF: Instantiate the template into a special control, that does nothing when a child control
// is added. This is more performant because the child control is never parented to the temporary
// control, it's ID is never generated, etc.
Control container = new NonParentingControl();
ZoneTemplate.InstantiateIn(container);
if (container.HasControls()) {
ControlCollection controls = container.Controls;
foreach (Control control in controls) {
if (control is ContentPlaceHolder) {
if (control.HasControls()) {
Control[] children = new Control[control.Controls.Count];
control.Controls.CopyTo(children, 0);
foreach (Control child in children) {
AddWebPartToList(webParts, child);
}
}
}
else {
AddWebPartToList(webParts, control);
}
}
}
}
return webParts;
}
protected internal override void OnInit(EventArgs e) {
base.OnInit(e);
_registrationComplete = true;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls.WebParts {
using System;
using System.Collections;
using System.ComponentModel;
using System.Security.Permissions;
using System.Web.UI;
using System.Web.UI.WebControls;
///
/// Zone that hosts WebPart controls, and contains a template to specify the contained WebParts.
///
[
Designer("System.Web.UI.Design.WebControls.WebParts.WebPartZoneDesigner, " + AssemblyRef.SystemDesign),
SupportsEventValidation,
]
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class WebPartZone : WebPartZoneBase {
private ITemplate _zoneTemplate;
private bool _registrationComplete;
[
Browsable(false),
DefaultValue(null),
PersistenceMode(PersistenceMode.InnerProperty),
TemplateInstance(TemplateInstance.Single)
]
public virtual ITemplate ZoneTemplate {
get {
return _zoneTemplate;
}
set {
if (!DesignMode) {
if (_registrationComplete) {
throw new InvalidOperationException(SR.GetString(SR.WebPart_SetZoneTemplateTooLate));
}
}
_zoneTemplate = value;
}
}
private void AddWebPartToList(WebPartCollection webParts, Control control) {
WebPart part = control as WebPart;
// We used to throw an exception if the template contained a non-whitespace literal.
// However, sometimes Venus would insert
tags between the server controls
// in the template. So, we now just ignore all literals.
if ((part == null) && !(control is LiteralControl)) {
WebPartManager manager = WebPartManager;
if (manager != null) {
part = manager.CreateWebPart(control);
}
else {
part = WebPartManager.CreateWebPartStatic(control);
}
}
if (part != null) {
webParts.Add(part);
}
}
protected internal override WebPartCollection GetInitialWebParts() {
WebPartCollection webParts = new WebPartCollection();
if (ZoneTemplate != null) {
// PERF: Instantiate the template into a special control, that does nothing when a child control
// is added. This is more performant because the child control is never parented to the temporary
// control, it's ID is never generated, etc.
Control container = new NonParentingControl();
ZoneTemplate.InstantiateIn(container);
if (container.HasControls()) {
ControlCollection controls = container.Controls;
foreach (Control control in controls) {
if (control is ContentPlaceHolder) {
if (control.HasControls()) {
Control[] children = new Control[control.Controls.Count];
control.Controls.CopyTo(children, 0);
foreach (Control child in children) {
AddWebPartToList(webParts, child);
}
}
}
else {
AddWebPartToList(webParts, control);
}
}
}
}
return webParts;
}
protected internal override void OnInit(EventArgs e) {
base.OnInit(e);
_registrationComplete = true;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RelationshipEndCollection.cs
- MetricEntry.cs
- DataSourceSelectArguments.cs
- SendActivityDesigner.cs
- FacetChecker.cs
- ZipIOLocalFileHeader.cs
- ComponentResourceKeyConverter.cs
- WebServiceHost.cs
- MarkupWriter.cs
- FormsAuthenticationCredentials.cs
- FileChangesMonitor.cs
- XmlSchemaComplexContent.cs
- DataGridItemCollection.cs
- FileDataSourceCache.cs
- RenamedEventArgs.cs
- TdsParserHelperClasses.cs
- JsonDataContract.cs
- HostedElements.cs
- Metafile.cs
- Int32RectValueSerializer.cs
- NumberFunctions.cs
- ViewGenerator.cs
- RSAOAEPKeyExchangeDeformatter.cs
- HttpListener.cs
- XmlWriterSettings.cs
- dataobject.cs
- XmlSubtreeReader.cs
- UseLicense.cs
- CustomError.cs
- Panel.cs
- ReachPrintTicketSerializer.cs
- DESCryptoServiceProvider.cs
- SecUtil.cs
- PerformanceCounter.cs
- MachineKeyValidationConverter.cs
- FilteredXmlReader.cs
- ProcessModule.cs
- GridViewUpdatedEventArgs.cs
- SignerInfo.cs
- SapiGrammar.cs
- DataGridPageChangedEventArgs.cs
- EventLogPermissionEntryCollection.cs
- LongMinMaxAggregationOperator.cs
- ReadWriteObjectLock.cs
- InfoCardRSACryptoProvider.cs
- OleDbEnumerator.cs
- XmlDictionary.cs
- LogicalExpr.cs
- DataGridViewColumnDesigner.cs
- MulticastOption.cs
- Single.cs
- NavigatorInput.cs
- DataServiceBehavior.cs
- SoapReflectionImporter.cs
- ByteViewer.cs
- TitleStyle.cs
- DataContext.cs
- DataGridViewCellCollection.cs
- XmlAutoDetectWriter.cs
- DbXmlEnabledProviderManifest.cs
- InvokeDelegate.cs
- InternalCompensate.cs
- NeutralResourcesLanguageAttribute.cs
- DependencyPropertyKey.cs
- RegexCapture.cs
- DataPagerField.cs
- BinaryWriter.cs
- MaterialGroup.cs
- ContainerUIElement3D.cs
- UrlPath.cs
- ClientTarget.cs
- EventHandlerList.cs
- RichTextBoxContextMenu.cs
- RoleManagerSection.cs
- IPipelineRuntime.cs
- WebPart.cs
- TextTreeDeleteContentUndoUnit.cs
- FileDialogPermission.cs
- SqlMethods.cs
- CustomValidator.cs
- DataGridViewCellPaintingEventArgs.cs
- InternalConfigRoot.cs
- FixedTextBuilder.cs
- RouteCollection.cs
- FreezableDefaultValueFactory.cs
- CultureSpecificCharacterBufferRange.cs
- HitTestResult.cs
- ReadOnlyPropertyMetadata.cs
- RegisteredScript.cs
- HttpApplicationFactory.cs
- OledbConnectionStringbuilder.cs
- ApplicationDirectory.cs
- CompilationPass2Task.cs
- XmlAttributes.cs
- RequestCachePolicy.cs
- Visual.cs
- WeakKeyDictionary.cs
- SafeThemeHandle.cs
- PropertyEmitterBase.cs
- GridViewRowCollection.cs