Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / WebControls / DataSourceIDConverter.cs / 1 / DataSourceIDConverter.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design.WebControls { using System; using System.CodeDom; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.ComponentModel.Design; using System.Data; using System.Design; using System.Diagnostics; using System.Runtime.InteropServices; using System.Globalization; using System.Collections.Generic; ///public class DataSourceIDConverter : TypeConverter { /// public DataSourceIDConverter() { } /// public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) { return true; } return false; } /// public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value == null) { return String.Empty; } else if (value.GetType() == typeof(string)) { return (string)value; } throw GetConvertFromException(value); } /// public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { string[] idsArray = null; if (context != null) { WebFormsRootDesigner rootDesigner = null; IDesignerHost designerHost = (IDesignerHost)(context.GetService(typeof(IDesignerHost))); Debug.Assert(designerHost != null, "Did not get DesignerHost service."); if (designerHost != null) { IComponent rootComponent = designerHost.RootComponent; if (rootComponent != null) { rootDesigner = designerHost.GetDesigner(rootComponent) as WebFormsRootDesigner; } } if (rootDesigner != null && !rootDesigner.IsDesignerViewLocked) { // Walk up the list of naming containers to get all accessible data sources IComponent component = context.Instance as IComponent; if (component == null) { // In case we are hosted in a DesignerActionList we need // to find out the component that the action list belongs to DesignerActionList actionList = context.Instance as DesignerActionList; if (actionList != null) { component = actionList.Component; } } IList allComponents = ControlHelper.GetAllComponents(component, new ControlHelper.IsValidComponentDelegate(IsValidDataSource)); List uniqueControlIDs = new List (); foreach (IComponent c in allComponents) { Control control = c as Control; if (control != null && !String.IsNullOrEmpty(control.ID)) { if (!uniqueControlIDs.Contains(control.ID)) { uniqueControlIDs.Add(control.ID); } } } uniqueControlIDs.Sort(StringComparer.OrdinalIgnoreCase); uniqueControlIDs.Insert(0, SR.GetString(SR.DataSourceIDChromeConverter_NoDataSource)); uniqueControlIDs.Add(SR.GetString(SR.DataSourceIDChromeConverter_NewDataSource)); idsArray = uniqueControlIDs.ToArray(); } } return new StandardValuesCollection(idsArray); } /// public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return false; } /// public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } /// protected virtual bool IsValidDataSource(IComponent component) { Control control = component as Control; if (control == null) { return false; } if (String.IsNullOrEmpty(control.ID)) { return false; } return (component is IDataSource); } } } // 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
- AssemblyBuilder.cs
- ApplyImportsAction.cs
- SafeBuffer.cs
- MessageQueueEnumerator.cs
- DataGridViewCellConverter.cs
- ClientFormsIdentity.cs
- SchemaImporter.cs
- JsonFormatGeneratorStatics.cs
- Rotation3D.cs
- DtrList.cs
- ValueConversionAttribute.cs
- TreeNodeSelectionProcessor.cs
- DeviceContext.cs
- _NegotiateClient.cs
- BindingsSection.cs
- FlowDocumentPageViewerAutomationPeer.cs
- ObfuscateAssemblyAttribute.cs
- PermissionAttributes.cs
- DbModificationClause.cs
- Processor.cs
- XPathDocumentNavigator.cs
- XmlSchemaObjectCollection.cs
- TextTreeText.cs
- CompilationLock.cs
- LogWriteRestartAreaAsyncResult.cs
- SqlReferenceCollection.cs
- GridViewColumnCollectionChangedEventArgs.cs
- _ConnectStream.cs
- ConfigXmlCDataSection.cs
- Buffer.cs
- MatrixAnimationUsingPath.cs
- CustomPopupPlacement.cs
- ReversePositionQuery.cs
- EventLogEntry.cs
- SqlCommandBuilder.cs
- FileStream.cs
- BinaryMethodMessage.cs
- Menu.cs
- SettingsPropertyValueCollection.cs
- BindingOperations.cs
- ExtensionSimplifierMarkupObject.cs
- ListItemViewControl.cs
- SerialReceived.cs
- AssemblyBuilderData.cs
- Error.cs
- ClrProviderManifest.cs
- BamlMapTable.cs
- Visual3DCollection.cs
- VideoDrawing.cs
- PasswordPropertyTextAttribute.cs
- TableLayoutPanelBehavior.cs
- GeneralTransformGroup.cs
- TableSectionStyle.cs
- TextDecorationCollection.cs
- ButtonField.cs
- EntityObject.cs
- Crypto.cs
- DiagnosticsConfiguration.cs
- DesignerImageAdapter.cs
- HttpModule.cs
- ObjectPersistData.cs
- SymLanguageType.cs
- SqlDataSourceCommandEventArgs.cs
- GridViewColumnHeader.cs
- PieceDirectory.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- UpdateManifestForBrowserApplication.cs
- FamilyCollection.cs
- MenuItemAutomationPeer.cs
- XhtmlConformanceSection.cs
- __Filters.cs
- BitSet.cs
- Classification.cs
- StrokeNodeOperations.cs
- NeutralResourcesLanguageAttribute.cs
- QueueSurrogate.cs
- ResolveDuplexAsyncResult.cs
- XmlSchemaNotation.cs
- Symbol.cs
- TextBoxBase.cs
- DataRowComparer.cs
- RedistVersionInfo.cs
- AutomationIdentifierGuids.cs
- OutgoingWebRequestContext.cs
- EntityDataSourceReferenceGroup.cs
- SecurityDocument.cs
- RayHitTestParameters.cs
- KeyboardDevice.cs
- PackageRelationship.cs
- ListViewCancelEventArgs.cs
- XamlGridLengthSerializer.cs
- ExpandCollapsePattern.cs
- ExceptionHandlerDesigner.cs
- LookupNode.cs
- Point3DCollection.cs
- TextTrailingCharacterEllipsis.cs
- ObjectConverter.cs
- RenameRuleObjectDialog.Designer.cs
- Int32Collection.cs
- PenCursorManager.cs