Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- TagMapCollection.cs
- SystemWebCachingSectionGroup.cs
- GridItem.cs
- ExtensionFile.cs
- ColumnTypeConverter.cs
- Int64Storage.cs
- ObjectResult.cs
- Action.cs
- PeerNodeAddress.cs
- TextParaClient.cs
- Message.cs
- ColumnPropertiesGroup.cs
- TimeIntervalCollection.cs
- QilParameter.cs
- ToolBarButtonClickEvent.cs
- UnicastIPAddressInformationCollection.cs
- PenThreadWorker.cs
- SerializerWriterEventHandlers.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- WebPartDisplayModeEventArgs.cs
- BitHelper.cs
- AuthenticationModulesSection.cs
- TextTreeObjectNode.cs
- CrossContextChannel.cs
- Win32SafeHandles.cs
- DecimalAnimation.cs
- TextParaClient.cs
- XmlSchemaSimpleType.cs
- TextEditor.cs
- WebResourceAttribute.cs
- DataGridTableCollection.cs
- ReadOnlyTernaryTree.cs
- BitmapEditor.cs
- IfAction.cs
- ServiceAuthorizationElement.cs
- WebPartTracker.cs
- EventListenerClientSide.cs
- PhysicalFontFamily.cs
- Transform3D.cs
- PeerApplicationLaunchInfo.cs
- RegionIterator.cs
- QilGeneratorEnv.cs
- ProcessStartInfo.cs
- RootNamespaceAttribute.cs
- Set.cs
- FixedSOMPageElement.cs
- ProgressPage.cs
- Group.cs
- PaintEvent.cs
- ProcessInputEventArgs.cs
- infer.cs
- AnnotationStore.cs
- SqlAliasesReferenced.cs
- GridEntryCollection.cs
- TaskHelper.cs
- NetMsmqBinding.cs
- DataGridTextColumn.cs
- Rotation3D.cs
- ProcessInfo.cs
- dsa.cs
- OdbcReferenceCollection.cs
- HierarchicalDataSourceConverter.cs
- InternalRelationshipCollection.cs
- NativeMethods.cs
- ContractsBCL.cs
- DataColumnChangeEvent.cs
- SourceSwitch.cs
- XmlCharCheckingWriter.cs
- TimeoutValidationAttribute.cs
- ToolStripItemRenderEventArgs.cs
- _CacheStreams.cs
- ImageConverter.cs
- SQLRoleProvider.cs
- WeakKeyDictionary.cs
- CodeAssignStatement.cs
- ExtenderControl.cs
- Int16KeyFrameCollection.cs
- TlsnegoTokenProvider.cs
- DataGridRelationshipRow.cs
- ResumeStoryboard.cs
- CookielessHelper.cs
- EventListenerClientSide.cs
- CalendarDateChangedEventArgs.cs
- ScriptingProfileServiceSection.cs
- TypeLibConverter.cs
- PermissionToken.cs
- FlowDocumentPageViewerAutomationPeer.cs
- CopyAttributesAction.cs
- PersonalizationAdministration.cs
- DataControlLinkButton.cs
- WindowsSpinner.cs
- DesignTimeVisibleAttribute.cs
- ACL.cs
- RequestResponse.cs
- WorkflowExecutor.cs
- FlowDocumentScrollViewer.cs
- SmtpReplyReaderFactory.cs
- DirtyTextRange.cs
- FontStretchConverter.cs
- NumericExpr.cs