Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / UI / DataSourceHelper.cs / 1 / DataSourceHelper.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Data; internal sealed class DataSourceHelper { private DataSourceHelper() { } internal static IEnumerable GetResolvedDataSource(object dataSource, string dataMember) { if (dataSource == null) return null; IListSource listSource = dataSource as IListSource; if (listSource != null) { IList memberList = listSource.GetList(); if (listSource.ContainsListCollection == false) { // the returned list is itself the list we need to bind to // NOTE: I am ignoring the DataMember parameter... ideally we might have // thrown an exception, but this would mess up design-time usage // where the user may change the data source from a DataSet to a // DataTable. return (IEnumerable)memberList; } if ((memberList != null) && (memberList is ITypedList)) { ITypedList typedMemberList = (ITypedList)memberList; PropertyDescriptorCollection propDescs = typedMemberList.GetItemProperties(new PropertyDescriptor[0]); if ((propDescs != null) && (propDescs.Count != 0)) { PropertyDescriptor listProperty = null; if (String.IsNullOrEmpty(dataMember)) { listProperty = propDescs[0]; } else { listProperty = propDescs.Find(dataMember, true); } if (listProperty != null) { object listRow = memberList[0]; object list = listProperty.GetValue(listRow); if ((list != null) && (list is IEnumerable)) { return (IEnumerable)list; } } throw new HttpException(SR.GetString(SR.ListSource_Missing_DataMember, dataMember)); } else { throw new HttpException(SR.GetString(SR.ListSource_Without_DataMembers)); } } } if (dataSource is IEnumerable) { return (IEnumerable)dataSource; } return null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Data; internal sealed class DataSourceHelper { private DataSourceHelper() { } internal static IEnumerable GetResolvedDataSource(object dataSource, string dataMember) { if (dataSource == null) return null; IListSource listSource = dataSource as IListSource; if (listSource != null) { IList memberList = listSource.GetList(); if (listSource.ContainsListCollection == false) { // the returned list is itself the list we need to bind to // NOTE: I am ignoring the DataMember parameter... ideally we might have // thrown an exception, but this would mess up design-time usage // where the user may change the data source from a DataSet to a // DataTable. return (IEnumerable)memberList; } if ((memberList != null) && (memberList is ITypedList)) { ITypedList typedMemberList = (ITypedList)memberList; PropertyDescriptorCollection propDescs = typedMemberList.GetItemProperties(new PropertyDescriptor[0]); if ((propDescs != null) && (propDescs.Count != 0)) { PropertyDescriptor listProperty = null; if (String.IsNullOrEmpty(dataMember)) { listProperty = propDescs[0]; } else { listProperty = propDescs.Find(dataMember, true); } if (listProperty != null) { object listRow = memberList[0]; object list = listProperty.GetValue(listRow); if ((list != null) && (list is IEnumerable)) { return (IEnumerable)list; } } throw new HttpException(SR.GetString(SR.ListSource_Missing_DataMember, dataMember)); } else { throw new HttpException(SR.GetString(SR.ListSource_Without_DataMembers)); } } } if (dataSource is IEnumerable) { return (IEnumerable)dataSource; } return null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BookmarkUndoUnit.cs
- UnmanagedMarshal.cs
- DynamicRendererThreadManager.cs
- PageHandlerFactory.cs
- List.cs
- DataRowExtensions.cs
- Dynamic.cs
- DockPatternIdentifiers.cs
- UnsafeNativeMethods.cs
- HttpListenerPrefixCollection.cs
- FileChangeNotifier.cs
- AnimationLayer.cs
- CollectionView.cs
- ObfuscateAssemblyAttribute.cs
- ChannelPool.cs
- SqlDataSourceSelectingEventArgs.cs
- TimelineGroup.cs
- RegexStringValidator.cs
- DecimalAnimation.cs
- PieceDirectory.cs
- PrintDialog.cs
- TTSEngineProxy.cs
- DeviceContexts.cs
- SerializationHelper.cs
- Automation.cs
- PassportAuthenticationModule.cs
- ServiceInstallComponent.cs
- Formatter.cs
- TreeNodeMouseHoverEvent.cs
- DependencyProperty.cs
- Variable.cs
- SchemaNames.cs
- QualifiedCellIdBoolean.cs
- ConfigurationSection.cs
- ProjectionPruner.cs
- SoapSchemaImporter.cs
- TabControlCancelEvent.cs
- ToolStripItemEventArgs.cs
- PageAsyncTask.cs
- RowBinding.cs
- ColorConvertedBitmapExtension.cs
- StorageMappingItemCollection.cs
- JsonEnumDataContract.cs
- PageEventArgs.cs
- String.cs
- ProviderConnectionPoint.cs
- MimeParameterWriter.cs
- GridViewRowPresenter.cs
- MemberPath.cs
- CheckBoxList.cs
- MembershipSection.cs
- DesignerCommandAdapter.cs
- XPathNavigatorKeyComparer.cs
- ValidationException.cs
- SerializationException.cs
- AtomMaterializer.cs
- DependencyObject.cs
- Menu.cs
- HtmlSelect.cs
- Int32Collection.cs
- Point3DCollectionConverter.cs
- AssemblyResolver.cs
- ConstraintCollection.cs
- DefaultWorkflowSchedulerService.cs
- CodeTypeOfExpression.cs
- _ListenerAsyncResult.cs
- RequestChannelBinder.cs
- MetadataArtifactLoader.cs
- ReadOnlyDataSource.cs
- Tile.cs
- AuthorizationRule.cs
- CachingHintValidation.cs
- UrlPath.cs
- IgnoreFlushAndCloseStream.cs
- AuthenticationException.cs
- DATA_BLOB.cs
- ConvertTextFrag.cs
- TextRangeBase.cs
- ResourcePermissionBase.cs
- TemplatePropertyEntry.cs
- ObjectCacheHost.cs
- WinHttpWebProxyFinder.cs
- JournalNavigationScope.cs
- ClientFormsIdentity.cs
- TwoPhaseCommitProxy.cs
- EncodingNLS.cs
- UrlPropertyAttribute.cs
- CellParaClient.cs
- RequestDescription.cs
- BatchParser.cs
- ToolStripCollectionEditor.cs
- SyndicationPerson.cs
- XPathPatternBuilder.cs
- TextTreeUndoUnit.cs
- DesignerWidgets.cs
- KnownTypeDataContractResolver.cs
- LinqDataSourceContextEventArgs.cs
- sortedlist.cs
- odbcmetadatafactory.cs
- ArrayHelper.cs