Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / ControlIdConverter.cs / 1 / ControlIdConverter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Globalization;
using System.Reflection;
using System.Web.Util;
using System.Security.Permissions;
///
/// TypeConverter for ControlParameter's ControlID property.
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class ControlIDConverter : StringConverter {
///
/// Determines whether a given control should have its id added to the StandardValuesCollection.
///
protected virtual bool FilterControl(Control control) {
return true;
}
///
/// Returns a list of all control IDs in the container.
///
private string[] GetControls(IDesignerHost host, object instance) {
IContainer container = host.Container;
// Locate nearest container
IComponent component = instance as IComponent;
if (component != null && component.Site != null) {
container = component.Site.Container;
}
if (container == null) {
return null;
}
ComponentCollection allComponents = container.Components;
ArrayList array = new ArrayList();
// For each control in the container
foreach (IComponent comp in (IEnumerable)allComponents) {
Control control = comp as Control;
// Ignore DesignerHost.RootComponent (Page or UserControl), controls that don't have ID's,
// and the Control itself
if (control != null &&
control != instance &&
control != host.RootComponent &&
control.ID != null &&
control.ID.Length > 0 &&
FilterControl(control)) {
array.Add(control.ID);
}
}
array.Sort(Comparer.Default);
return (string[])array.ToArray(typeof(string));
}
///
/// Returns a collection of standard values retrieved from the context specified
/// by the specified type descriptor.
///
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) {
if (context == null) {
return null;
}
IDesignerHost host = (IDesignerHost)context.GetService(typeof(IDesignerHost));
Debug.Assert(host != null, "Unable to get IDesignerHost in ControlIDConverter");
if (host != null) {
string[] controlIDs = GetControls(host, context.Instance);
if (controlIDs == null) {
return null;
}
return new StandardValuesCollection(controlIDs);
}
return null;
}
///
/// Gets whether or not the context specified contains exclusive standard values.
///
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) {
return false;
}
///
/// Gets whether or not the specified context contains supported standard values.
///
public override bool GetStandardValuesSupported(ITypeDescriptorContext context) {
return (context != null);
}
}
}
// 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 {
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Globalization;
using System.Reflection;
using System.Web.Util;
using System.Security.Permissions;
///
/// TypeConverter for ControlParameter's ControlID property.
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class ControlIDConverter : StringConverter {
///
/// Determines whether a given control should have its id added to the StandardValuesCollection.
///
protected virtual bool FilterControl(Control control) {
return true;
}
///
/// Returns a list of all control IDs in the container.
///
private string[] GetControls(IDesignerHost host, object instance) {
IContainer container = host.Container;
// Locate nearest container
IComponent component = instance as IComponent;
if (component != null && component.Site != null) {
container = component.Site.Container;
}
if (container == null) {
return null;
}
ComponentCollection allComponents = container.Components;
ArrayList array = new ArrayList();
// For each control in the container
foreach (IComponent comp in (IEnumerable)allComponents) {
Control control = comp as Control;
// Ignore DesignerHost.RootComponent (Page or UserControl), controls that don't have ID's,
// and the Control itself
if (control != null &&
control != instance &&
control != host.RootComponent &&
control.ID != null &&
control.ID.Length > 0 &&
FilterControl(control)) {
array.Add(control.ID);
}
}
array.Sort(Comparer.Default);
return (string[])array.ToArray(typeof(string));
}
///
/// Returns a collection of standard values retrieved from the context specified
/// by the specified type descriptor.
///
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) {
if (context == null) {
return null;
}
IDesignerHost host = (IDesignerHost)context.GetService(typeof(IDesignerHost));
Debug.Assert(host != null, "Unable to get IDesignerHost in ControlIDConverter");
if (host != null) {
string[] controlIDs = GetControls(host, context.Instance);
if (controlIDs == null) {
return null;
}
return new StandardValuesCollection(controlIDs);
}
return null;
}
///
/// Gets whether or not the context specified contains exclusive standard values.
///
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) {
return false;
}
///
/// Gets whether or not the specified context contains supported standard values.
///
public override bool GetStandardValuesSupported(ITypeDescriptorContext context) {
return (context != null);
}
}
}
// 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
- PatternMatcher.cs
- MaterializeFromAtom.cs
- XmlSchemaSimpleType.cs
- NativeMethods.cs
- TdsParserHelperClasses.cs
- AppDomainGrammarProxy.cs
- XmlCharacterData.cs
- MeshGeometry3D.cs
- IPipelineRuntime.cs
- SQLStringStorage.cs
- AssemblyAttributes.cs
- NavigationWindow.cs
- Debug.cs
- ApplicationProxyInternal.cs
- XsltException.cs
- ProfessionalColorTable.cs
- ClrPerspective.cs
- ObjectManager.cs
- ProfileWorkflowElement.cs
- TextCharacters.cs
- MenuAutomationPeer.cs
- ZoneIdentityPermission.cs
- StandardOleMarshalObject.cs
- LinearQuaternionKeyFrame.cs
- SystemDropShadowChrome.cs
- QueryCreatedEventArgs.cs
- ViewValidator.cs
- BamlResourceDeserializer.cs
- AsyncCompletedEventArgs.cs
- StateMachine.cs
- ShaderEffect.cs
- EntityDataSourceContextDisposingEventArgs.cs
- MemoryFailPoint.cs
- HotCommands.cs
- QuadraticEase.cs
- DescendentsWalker.cs
- ScrollableControl.cs
- AnnotationObservableCollection.cs
- ArgumentOutOfRangeException.cs
- Invariant.cs
- SystemNetworkInterface.cs
- ReflectionHelper.cs
- TextBoxView.cs
- ProcessThreadCollection.cs
- ImageInfo.cs
- _RequestCacheProtocol.cs
- WebUtil.cs
- CodeCatchClauseCollection.cs
- DBParameter.cs
- ControlIdConverter.cs
- WasAdminWrapper.cs
- RegexReplacement.cs
- EpmTargetTree.cs
- XamlTypeWithExplicitNamespace.cs
- DriveInfo.cs
- BitmapEffectGeneralTransform.cs
- ControlValuePropertyAttribute.cs
- PolyLineSegment.cs
- AgileSafeNativeMemoryHandle.cs
- Hash.cs
- FormView.cs
- ExpressionBuilder.cs
- SqlCommandSet.cs
- QueryOutputWriter.cs
- DetailsViewCommandEventArgs.cs
- WindowsScroll.cs
- ToolStripContainer.cs
- EdmEntityTypeAttribute.cs
- StatusBar.cs
- initElementDictionary.cs
- HashCodeCombiner.cs
- ResolveDuplexAsyncResult.cs
- BamlWriter.cs
- OracleParameterBinding.cs
- SrgsDocument.cs
- MessageHeaderInfoTraceRecord.cs
- SectionRecord.cs
- ListBase.cs
- CardSpaceSelector.cs
- CalendarDay.cs
- SamlAssertion.cs
- ProjectionCamera.cs
- TdsParserSessionPool.cs
- DesignerDataView.cs
- XhtmlBasicValidationSummaryAdapter.cs
- MimePart.cs
- DataControlFieldHeaderCell.cs
- SecurityTraceRecordHelper.cs
- DataGridItemAttachedStorage.cs
- EntityDataSourceView.cs
- CacheOutputQuery.cs
- ValueTypeFixupInfo.cs
- XmlArrayItemAttribute.cs
- PageHandlerFactory.cs
- DoubleLink.cs
- CompilationSection.cs
- _ListenerResponseStream.cs
- DataColumnMapping.cs
- StreamResourceInfo.cs
- AuthenticationModuleElement.cs