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
- AssignDesigner.xaml.cs
- ReachUIElementCollectionSerializerAsync.cs
- HMACSHA512.cs
- ControlValuePropertyAttribute.cs
- CellCreator.cs
- UnsafeNativeMethodsMilCoreApi.cs
- DefaultPropertyAttribute.cs
- DbExpressionBuilder.cs
- XmlSignatureManifest.cs
- UserControlParser.cs
- SqlDataAdapter.cs
- TraceSection.cs
- OleDbMetaDataFactory.cs
- HttpCapabilitiesBase.cs
- ErrorLog.cs
- TextBox.cs
- SQLInt64Storage.cs
- GridViewEditEventArgs.cs
- TemplateBamlTreeBuilder.cs
- EnumerableRowCollection.cs
- MiniMapControl.xaml.cs
- SchemaTableColumn.cs
- XslNumber.cs
- TripleDESCryptoServiceProvider.cs
- FormattedText.cs
- Transactions.cs
- SchemaEntity.cs
- Focus.cs
- SemaphoreSlim.cs
- EventManager.cs
- BrowserCapabilitiesFactory.cs
- PointCollectionValueSerializer.cs
- RoleBoolean.cs
- OptimizedTemplateContentHelper.cs
- GeneralTransformCollection.cs
- OdbcStatementHandle.cs
- DataGridItemEventArgs.cs
- Keyboard.cs
- AppSettingsSection.cs
- Form.cs
- HttpHandlersSection.cs
- DescendantBaseQuery.cs
- BinaryKeyIdentifierClause.cs
- OutputCacheProfile.cs
- SqlUserDefinedAggregateAttribute.cs
- PackageFilter.cs
- User.cs
- SecurityHelper.cs
- TextRangeProviderWrapper.cs
- CapabilitiesPattern.cs
- WebPartMenuStyle.cs
- VisualBasicSettingsConverter.cs
- ScheduleChanges.cs
- BitmapImage.cs
- HelpEvent.cs
- ObjectMemberMapping.cs
- MatrixCamera.cs
- ListBoxAutomationPeer.cs
- DbProviderSpecificTypePropertyAttribute.cs
- RoleManagerModule.cs
- Assert.cs
- EntityKey.cs
- TerminatingOperationBehavior.cs
- ReadOnlyCollectionBuilder.cs
- FixedNode.cs
- XmlResolver.cs
- RoleGroupCollection.cs
- EpmContentSerializerBase.cs
- AssemblyGen.cs
- JsonDataContract.cs
- _ChunkParse.cs
- HttpFileCollection.cs
- ProcessModule.cs
- TemplateBamlTreeBuilder.cs
- UIElement3DAutomationPeer.cs
- NavigationCommands.cs
- DocumentsTrace.cs
- PassportIdentity.cs
- NodeFunctions.cs
- HtmlInputControl.cs
- SafeNativeMethodsMilCoreApi.cs
- LogPolicy.cs
- ContainerActivationHelper.cs
- ListViewItemEventArgs.cs
- LogStore.cs
- UnmanagedMemoryAccessor.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- LabelEditEvent.cs
- SortedDictionary.cs
- InputLanguageEventArgs.cs
- MessageQueueKey.cs
- AnchorEditor.cs
- LinqDataSourceInsertEventArgs.cs
- RefExpr.cs
- XpsImageSerializationService.cs
- ContentIterators.cs
- filewebrequest.cs
- RequestCache.cs
- XmlWriter.cs
- brushes.cs