Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / UI / ExtenderControl.cs / 1305376 / ExtenderControl.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Web; using System.Web.UI; using System.Web.Resources; using System.Web.Util; [ DefaultProperty("TargetControlID"), Designer("System.Web.UI.Design.ExtenderControlDesigner, " + AssemblyRef.SystemWebExtensionsDesign), NonVisualControl(), ParseChildren(true), PersistChildren(false), ToolboxItem("System.Web.UI.Design.ExtenderControlToolboxItem, " + AssemblyRef.SystemWebExtensionsDesign), ] public abstract class ExtenderControl : Control, IExtenderControl { private string _targetControlID; private IScriptManagerInternal _scriptManager; private new IPage _page; protected ExtenderControl() { } internal ExtenderControl(IScriptManagerInternal scriptManager, IPage page) { _scriptManager = scriptManager; _page = page; } private IPage IPage { get { if (_page != null) { return _page; } else { Page page = Page; if (page == null) { throw new InvalidOperationException(AtlasWeb.Common_PageCannotBeNull); } return new PageWrapper(page); } } } private IScriptManagerInternal ScriptManager { get { if (_scriptManager == null) { Page page = Page; if (page == null) { throw new InvalidOperationException(AtlasWeb.Common_PageCannotBeNull); } _scriptManager = System.Web.UI.ScriptManager.GetCurrent(page); if (_scriptManager == null) { throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, AtlasWeb.Common_ScriptManagerRequired, ID)); } } return _scriptManager; } } [ Category("Behavior"), DefaultValue(""), IDReferenceProperty, ResourceDescription("ExtenderControl_TargetControlID"), SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "ID"), ] public string TargetControlID { get { return (_targetControlID == null) ? String.Empty : _targetControlID; } set { _targetControlID = value; } } [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never) ] public override bool Visible { get { return base.Visible; } set { throw new NotImplementedException(); } } ////// Finds the closest UpdatePanel in the parent controls of the specified control. /// /// The control for which we want the closest UpdatePanel. ///An UpdatePanel or null if none was found. private static UpdatePanel FindUpdatePanel(Control control) { Control parent = control.Parent; while (parent != null) { UpdatePanel parentPanel = parent as UpdatePanel; if (parentPanel != null) { return parentPanel; } parent = parent.Parent; } return null; } [SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")] protected internal override void OnPreRender(EventArgs e) { base.OnPreRender(e); RegisterWithScriptManager(); } private void RegisterWithScriptManager() { if (String.IsNullOrEmpty(TargetControlID)) { throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, AtlasWeb.ExtenderControl_TargetControlIDEmpty, ID)); } Control targetControl = FindControl(TargetControlID); if (targetControl == null) { throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, AtlasWeb.ExtenderControl_TargetControlIDInvalid, ID, TargetControlID)); } // Check if the target control and its extender are in the same UpdatePanel if any: if (FindUpdatePanel(this) != FindUpdatePanel(targetControl)) { throw new InvalidOperationException(AtlasWeb.ExtenderControl_TargetControlDifferentUpdatePanel); } ScriptManager.RegisterExtenderControl(this, targetControl); } protected internal override void Render(HtmlTextWriter writer) { base.Render(writer); // DevDiv 97460: ScriptDescriptors only render if in server form, verify to avoid silently failing. IPage.VerifyRenderingInServerForm(this); // ScriptManager cannot be found in DesignMode, so do not attempt to register scripts. if (!DesignMode) { ScriptManager.RegisterScriptDescriptors(this); } } protected abstract IEnumerableGetScriptDescriptors(Control targetControl); [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Implementation will likely return a new collection, which is too slow for a property")] protected abstract IEnumerable GetScriptReferences(); #region IExtenderControl Members IEnumerable IExtenderControl.GetScriptDescriptors(Control targetControl) { return GetScriptDescriptors(targetControl); } IEnumerable IExtenderControl.GetScriptReferences() { return GetScriptReferences(); } #endregion } } // 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
- AsynchronousChannel.cs
- MethodSet.cs
- IPHostEntry.cs
- NameValueFileSectionHandler.cs
- HijriCalendar.cs
- PenContext.cs
- GeometryModel3D.cs
- WebPartConnectVerb.cs
- InheritablePropertyChangeInfo.cs
- ComponentCommands.cs
- Crypto.cs
- TransactionProxy.cs
- ACE.cs
- TrackingRecord.cs
- ForceCopyBuildProvider.cs
- CompiledQuery.cs
- GridViewSelectEventArgs.cs
- WinEventHandler.cs
- DbMetaDataCollectionNames.cs
- DataGridParentRows.cs
- MailHeaderInfo.cs
- SubMenuStyle.cs
- TextLineResult.cs
- Rfc2898DeriveBytes.cs
- UInt64.cs
- CollectionsUtil.cs
- ScriptComponentDescriptor.cs
- CellTreeNode.cs
- ComplexPropertyEntry.cs
- SafeNativeMethodsOther.cs
- DataGridViewCellFormattingEventArgs.cs
- BooleanStorage.cs
- PropertyValueChangedEvent.cs
- FixedTextPointer.cs
- TransportReplyChannelAcceptor.cs
- QueryCreatedEventArgs.cs
- RowUpdatedEventArgs.cs
- RadioButtonBaseAdapter.cs
- SqlDeflator.cs
- SchemaTableColumn.cs
- AttachedPropertyInfo.cs
- ConsoleTraceListener.cs
- Brush.cs
- PropertyMapper.cs
- Rotation3DKeyFrameCollection.cs
- CmsInterop.cs
- _LocalDataStore.cs
- FixedSOMFixedBlock.cs
- NumberFormatInfo.cs
- TableCell.cs
- NullRuntimeConfig.cs
- BaseCodeDomTreeGenerator.cs
- Mappings.cs
- UpDownEvent.cs
- DependencyPropertyAttribute.cs
- UrlRoutingHandler.cs
- DiscoveryServiceExtension.cs
- HwndMouseInputProvider.cs
- CapabilitiesRule.cs
- AppModelKnownContentFactory.cs
- StrokeNode.cs
- FastEncoderStatics.cs
- Stackframe.cs
- Label.cs
- ServiceRouteHandler.cs
- RoutedCommand.cs
- SpecialTypeDataContract.cs
- TransactedBatchingElement.cs
- NamespaceDisplayAutomationPeer.cs
- VectorCollectionConverter.cs
- PasswordPropertyTextAttribute.cs
- FragmentQueryKB.cs
- GeneralTransform3DGroup.cs
- SystemResources.cs
- SqlBuffer.cs
- HttpListenerRequest.cs
- BitmapMetadataEnumerator.cs
- DynamicResourceExtension.cs
- SafeEventHandle.cs
- ResumeStoryboard.cs
- ProfileGroupSettings.cs
- DayRenderEvent.cs
- BaseAppDomainProtocolHandler.cs
- ContractAdapter.cs
- CryptoConfig.cs
- FusionWrap.cs
- UiaCoreProviderApi.cs
- DecoderBestFitFallback.cs
- DiscoveryClientRequestChannel.cs
- WindowsStatusBar.cs
- DotAtomReader.cs
- DesignerActionTextItem.cs
- ZipIOLocalFileDataDescriptor.cs
- SectionInput.cs
- MetadataArtifactLoader.cs
- DirtyTextRange.cs
- FixedStringLookup.cs
- LicenseManager.cs
- _LocalDataStore.cs
- NestedContainer.cs