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
- DiagnosticTraceSource.cs
- PathParser.cs
- XmlTypeAttribute.cs
- SourceElementsCollection.cs
- DesignTimeVisibleAttribute.cs
- SystemFonts.cs
- ProcessHostFactoryHelper.cs
- ToolBar.cs
- MailMessage.cs
- WebServiceTypeData.cs
- ControlDesigner.cs
- ExtensionCollection.cs
- LocalizableAttribute.cs
- IndentedWriter.cs
- CompilationUtil.cs
- RotateTransform.cs
- EditorPart.cs
- ArraySegment.cs
- SimpleWebHandlerParser.cs
- RangeContentEnumerator.cs
- wgx_sdk_version.cs
- Task.cs
- SizeAnimationClockResource.cs
- MessageEnumerator.cs
- COM2PropertyBuilderUITypeEditor.cs
- TextStore.cs
- Registration.cs
- SingleObjectCollection.cs
- RawStylusInputReport.cs
- LocatorPartList.cs
- DesignerRegion.cs
- Bidi.cs
- TextDecoration.cs
- RenderDataDrawingContext.cs
- EditorZone.cs
- DataServiceBehavior.cs
- EventWaitHandleSecurity.cs
- CoTaskMemSafeHandle.cs
- StagingAreaInputItem.cs
- ConfigXmlSignificantWhitespace.cs
- GrammarBuilderBase.cs
- ReferenceTypeElement.cs
- AutomationPropertyInfo.cs
- TriState.cs
- PageThemeCodeDomTreeGenerator.cs
- Menu.cs
- xmlsaver.cs
- XamlStyleSerializer.cs
- ListControl.cs
- MappingSource.cs
- XmlAggregates.cs
- UrlMappingsSection.cs
- State.cs
- TextCompositionEventArgs.cs
- HMACRIPEMD160.cs
- BackStopAuthenticationModule.cs
- WindowsListViewScroll.cs
- ControlIdConverter.cs
- Scripts.cs
- ConnectorDragDropGlyph.cs
- AnimatedTypeHelpers.cs
- PrintPreviewGraphics.cs
- DocumentScope.cs
- RoutedEventConverter.cs
- BitmapFrameDecode.cs
- UInt16.cs
- RowParagraph.cs
- MergeLocalizationDirectives.cs
- ChannelServices.cs
- RelatedEnd.cs
- HttpProcessUtility.cs
- BoundConstants.cs
- ModelService.cs
- ServiceNameCollection.cs
- AsymmetricSignatureFormatter.cs
- BamlLocalizationDictionary.cs
- TextReturnReader.cs
- ThreadSafeList.cs
- TextOptions.cs
- BitmapCodecInfo.cs
- PerformanceCounterCategory.cs
- Size3DConverter.cs
- SqlRetyper.cs
- peernodestatemanager.cs
- ActivityValidator.cs
- X500Name.cs
- TypedDataSourceCodeGenerator.cs
- PageSettings.cs
- ActivationServices.cs
- EnumMember.cs
- SqlMethodCallConverter.cs
- DbConnectionPoolGroup.cs
- VersionPair.cs
- SerialPinChanges.cs
- Thickness.cs
- SafeNativeMethods.cs
- SubclassTypeValidatorAttribute.cs
- X509AsymmetricSecurityKey.cs
- SerializerWriterEventHandlers.cs
- FixedSOMSemanticBox.cs