Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / DataSourceConverter.cs / 1 / DataSourceConverter.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.Design { using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Globalization; using System.Diagnostics.CodeAnalysis; internal class DataSourceConverter : ReferenceConverter { [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] public DataSourceConverter() : base(typeof(IListSource)) { } ReferenceConverter listConverter = new ReferenceConverter(typeof(IList)); public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { ArrayList listSources = new ArrayList(base.GetStandardValues(context)); StandardValuesCollection lists = listConverter.GetStandardValues(context); ArrayList listsList = new ArrayList(); BindingSource bs = context.Instance as BindingSource; foreach (object listSource in listSources) { if (listSource != null) { // bug 46563: work around the TableMappings property on the OleDbDataAdapter ListBindableAttribute listBindable = (ListBindableAttribute) TypeDescriptor.GetAttributes(listSource)[typeof(ListBindableAttribute)]; if (listBindable != null && !listBindable.ListBindable) { continue; } // Prevent user from being able to connect a BindingSource to itself if (bs != null && bs == listSource) { continue; } // Per Whidbey spec : DataSourcePicker.doc, 3.4.1 // // if this is a DataTable and the DataSet that owns the table is in the list, // don't add it. this way we only show the top-level data sources and don't clutter the // list with duplicates like: // // NorthWind1.Customers // NorthWind1.Employees // NorthWind1 // // but instead just show "NorthWind1". This does force the user to pick a data member but helps // with simplicity. // // we are doing an n^2 lookup here but this list will never be more than 10 or 15 entries long so it should // not be a problem. // DataTable listSourceDataTable = listSource as DataTable; if (listSourceDataTable == null || !listSources.Contains(listSourceDataTable.DataSet)) { listsList.Add(listSource); } } } foreach (object list in lists) { if (list!= null) { // bug 46563: work around the TableMappings property on the OleDbDataAdapter ListBindableAttribute listBindable = (ListBindableAttribute) TypeDescriptor.GetAttributes(list)[typeof(ListBindableAttribute)]; if (listBindable != null && !listBindable.ListBindable) continue; // Prevent user from being able to connect a BindingSource to itself if (bs != null && bs == list) { continue; } listsList.Add(list); } } // bug 71417: add a null list to reset the dataSource listsList.Add(null); return new StandardValuesCollection(listsList); } public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return true; } public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { // Types are now valid data sources, so we need to be able to // represent them as strings (since ReferenceConverter can't) if (destinationType == typeof(string) && value is Type) { return value.ToString(); } return base.ConvertTo(context, culture, value, destinationType); } } } // 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
- EnumUnknown.cs
- FloatMinMaxAggregationOperator.cs
- Composition.cs
- QueryStringHandler.cs
- ValueQuery.cs
- MetadataItemEmitter.cs
- PermissionRequestEvidence.cs
- EventSourceCreationData.cs
- Module.cs
- MultiView.cs
- DocumentScope.cs
- MatrixUtil.cs
- XmlSchemaObjectCollection.cs
- AuthenticationModuleElement.cs
- Propagator.JoinPropagator.cs
- DataColumnMapping.cs
- TextFindEngine.cs
- ErrorHandler.cs
- CodeSnippetStatement.cs
- KeyValueConfigurationElement.cs
- WebPartDisplayModeCollection.cs
- SafeCryptHandles.cs
- NativeRecognizer.cs
- XslAstAnalyzer.cs
- XamlDesignerSerializationManager.cs
- XmlAttributes.cs
- SmiMetaData.cs
- XNodeValidator.cs
- MetadataUtil.cs
- ActivityDesignerResources.cs
- ReferencedCollectionType.cs
- StylusPointDescription.cs
- Transform3D.cs
- TransformPattern.cs
- HostingEnvironment.cs
- InvalidChannelBindingException.cs
- SelectorItemAutomationPeer.cs
- WeakReferenceKey.cs
- BooleanExpr.cs
- DEREncoding.cs
- Nodes.cs
- LayoutDump.cs
- HttpContextWrapper.cs
- PublisherIdentityPermission.cs
- IteratorFilter.cs
- VoiceChangeEventArgs.cs
- Preprocessor.cs
- XmlSerializerVersionAttribute.cs
- FactoryId.cs
- XmlSchemaObjectTable.cs
- SwitchLevelAttribute.cs
- PropertyConverter.cs
- SchemaNotation.cs
- ParameterToken.cs
- Encoding.cs
- CacheEntry.cs
- BaseCodeDomTreeGenerator.cs
- IDispatchConstantAttribute.cs
- DependencyObjectPropertyDescriptor.cs
- SyndicationElementExtensionCollection.cs
- PKCS1MaskGenerationMethod.cs
- ObjectStorage.cs
- XmlDocumentFieldSchema.cs
- ChannelParameterCollection.cs
- XmlReflectionImporter.cs
- DbProviderFactoriesConfigurationHandler.cs
- OraclePermissionAttribute.cs
- MissingMemberException.cs
- HitTestDrawingContextWalker.cs
- FrameworkElementFactory.cs
- UdpTransportSettingsElement.cs
- HyperLinkColumn.cs
- GestureRecognizer.cs
- StreamGeometry.cs
- PreviewPageInfo.cs
- GroupByQueryOperator.cs
- DispatcherSynchronizationContext.cs
- DataSpaceManager.cs
- GetPageNumberCompletedEventArgs.cs
- ProfileGroupSettingsCollection.cs
- RetrieveVirtualItemEventArgs.cs
- TargetParameterCountException.cs
- Hashtable.cs
- PropertyPathConverter.cs
- MatrixValueSerializer.cs
- StaticContext.cs
- Int16KeyFrameCollection.cs
- ZipIOBlockManager.cs
- ToolStripSystemRenderer.cs
- MatrixAnimationUsingKeyFrames.cs
- FilteredReadOnlyMetadataCollection.cs
- ToolStripDropTargetManager.cs
- Literal.cs
- XsdDuration.cs
- GenericsInstances.cs
- RegexWriter.cs
- GlobalizationAssembly.cs
- XmlNode.cs
- NativeMethods.cs
- TailCallAnalyzer.cs