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
- ResourceIDHelper.cs
- MaskedTextProvider.cs
- XmlAnyElementAttribute.cs
- SqlDataSourceView.cs
- EntityExpressionVisitor.cs
- Vector3D.cs
- documentation.cs
- GroupedContextMenuStrip.cs
- ReachVisualSerializer.cs
- VerificationAttribute.cs
- SessionEndingCancelEventArgs.cs
- CodeGeneratorOptions.cs
- ClickablePoint.cs
- ItemsChangedEventArgs.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- SmiTypedGetterSetter.cs
- UserControlAutomationPeer.cs
- StylusPlugInCollection.cs
- StringFormat.cs
- TemplateInstanceAttribute.cs
- WorkflowDefinitionContext.cs
- Signature.cs
- PrinterSettings.cs
- ZipIORawDataFileBlock.cs
- XmlSerializationWriter.cs
- SocketElement.cs
- Menu.cs
- AdRotatorDesigner.cs
- Utilities.cs
- MetricEntry.cs
- XamlFigureLengthSerializer.cs
- unitconverter.cs
- MultilineStringConverter.cs
- DataRowExtensions.cs
- XhtmlConformanceSection.cs
- ChangeNode.cs
- TaskCanceledException.cs
- OleDbWrapper.cs
- SmiEventStream.cs
- basemetadatamappingvisitor.cs
- NetTcpSection.cs
- MDIControlStrip.cs
- ProcessThreadCollection.cs
- _Semaphore.cs
- InfoCardBaseException.cs
- counter.cs
- DataKeyCollection.cs
- TcpHostedTransportConfiguration.cs
- TabItemAutomationPeer.cs
- ProviderConnectionPoint.cs
- AdornerLayer.cs
- XmlFormatExtensionAttribute.cs
- BamlVersionHeader.cs
- MouseGestureValueSerializer.cs
- XPathSingletonIterator.cs
- BufferModesCollection.cs
- GrammarBuilder.cs
- ZipIOModeEnforcingStream.cs
- MessageUtil.cs
- UICuesEvent.cs
- BitmapEffectGroup.cs
- CqlGenerator.cs
- SymLanguageVendor.cs
- TabControlEvent.cs
- ClientRolePrincipal.cs
- NoClickablePointException.cs
- FixedSOMImage.cs
- FtpWebResponse.cs
- HtmlInputButton.cs
- ToggleProviderWrapper.cs
- WebPartCloseVerb.cs
- IdnElement.cs
- Stacktrace.cs
- LinqDataSource.cs
- LinqDataSourceContextEventArgs.cs
- Helpers.cs
- ValidatingPropertiesEventArgs.cs
- AutomationTextAttribute.cs
- SerializationAttributes.cs
- XmlSchemas.cs
- AccessText.cs
- OleDbRowUpdatedEvent.cs
- PageOutputQuality.cs
- RenderTargetBitmap.cs
- TypefaceMetricsCache.cs
- DirectoryInfo.cs
- ProxyWebPart.cs
- ValidationErrorCollection.cs
- CompModSwitches.cs
- SimplePropertyEntry.cs
- _LazyAsyncResult.cs
- SelectionGlyphBase.cs
- SHA1Managed.cs
- Int32CAMarshaler.cs
- BinaryMethodMessage.cs
- FlowDocumentReaderAutomationPeer.cs
- EventProviderWriter.cs
- WsdlBuildProvider.cs
- StatusBar.cs
- SchemeSettingElementCollection.cs