Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebParts / WebPartZone.cs / 2 / 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. //------------------------------------------------------------------------------ //// 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSchemaGroup.cs
- ApplicationDirectoryMembershipCondition.cs
- ChangesetResponse.cs
- ErrorWrapper.cs
- Compiler.cs
- ToolStripItemGlyph.cs
- SoapSchemaMember.cs
- DbDataReader.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- ElementUtil.cs
- Win32MouseDevice.cs
- TreeViewBindingsEditorForm.cs
- JsonUriDataContract.cs
- SymDocumentType.cs
- ConnectionStringSettings.cs
- StateManagedCollection.cs
- ZipIOCentralDirectoryBlock.cs
- DockPanel.cs
- ResourceAssociationTypeEnd.cs
- RegexMatch.cs
- CodeSubDirectory.cs
- ConnectionConsumerAttribute.cs
- FormatConvertedBitmap.cs
- XmlBaseReader.cs
- Tablet.cs
- PrePrepareMethodAttribute.cs
- DataServiceRequestOfT.cs
- FilePrompt.cs
- SmiEventSink_Default.cs
- GridPattern.cs
- MimeXmlImporter.cs
- DataGridViewTopRowAccessibleObject.cs
- TypeTypeConverter.cs
- SurrogateSelector.cs
- SpotLight.cs
- PeerName.cs
- HostExecutionContextManager.cs
- SignedXml.cs
- BatchStream.cs
- ConsoleCancelEventArgs.cs
- Ref.cs
- InlineUIContainer.cs
- HtmlTableCell.cs
- ToolStripButton.cs
- HasCopySemanticsAttribute.cs
- RequestQueryParser.cs
- PingOptions.cs
- XNodeNavigator.cs
- Win32SafeHandles.cs
- RegistryConfigurationProvider.cs
- RegexCode.cs
- OptionalColumn.cs
- SqlLiftWhereClauses.cs
- SystemFonts.cs
- DataColumnMappingCollection.cs
- ToolStripRendererSwitcher.cs
- FormViewInsertEventArgs.cs
- WebPartDisplayModeCancelEventArgs.cs
- SchemaTypeEmitter.cs
- NotCondition.cs
- KnownAssembliesSet.cs
- WebWorkflowRole.cs
- FixedSOMTableCell.cs
- DesignUtil.cs
- DefaultValueTypeConverter.cs
- SafeBitVector32.cs
- CodeAttributeArgumentCollection.cs
- XmlAggregates.cs
- DataGridViewRowsRemovedEventArgs.cs
- RelationshipFixer.cs
- ActivityDesignerLayoutSerializers.cs
- TypeForwardedFromAttribute.cs
- CaseInsensitiveHashCodeProvider.cs
- DefaultTextStore.cs
- PrintDialog.cs
- _AutoWebProxyScriptEngine.cs
- SmtpNetworkElement.cs
- Style.cs
- TextMarkerSource.cs
- UnrecognizedAssertionsBindingElement.cs
- ColumnHeaderConverter.cs
- TextPattern.cs
- StubHelpers.cs
- ScrollEventArgs.cs
- SHA1Managed.cs
- ObjectDataSourceSelectingEventArgs.cs
- TextParentUndoUnit.cs
- AuthenticateEventArgs.cs
- GridViewRowCollection.cs
- RuntimeResourceSet.cs
- AsnEncodedData.cs
- DictionaryContent.cs
- RemotingAttributes.cs
- SiteMapDesignerDataSourceView.cs
- MatrixAnimationUsingKeyFrames.cs
- assertwrapper.cs
- VSWCFServiceContractGenerator.cs
- Label.cs
- StackOverflowException.cs
- DynamicValidatorEventArgs.cs