Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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;
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlBuilder.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- EventHandlerList.cs
- StringDictionaryCodeDomSerializer.cs
- __ComObject.cs
- FieldToken.cs
- FormViewDeletedEventArgs.cs
- DbQueryCommandTree.cs
- SchemaImporterExtension.cs
- ButtonField.cs
- EventPropertyMap.cs
- ObjectNotFoundException.cs
- WebServiceHost.cs
- CodeExporter.cs
- SourceFilter.cs
- ObjectCache.cs
- ButtonField.cs
- Baml6ConstructorInfo.cs
- SqlVersion.cs
- ObjectIDGenerator.cs
- RelatedView.cs
- ErrorFormatter.cs
- ChannelServices.cs
- SafeEventHandle.cs
- ObjectFullSpanRewriter.cs
- SiteOfOriginContainer.cs
- PostBackOptions.cs
- FlowDocument.cs
- CaseCqlBlock.cs
- ServiceObjectContainer.cs
- DesignerAdRotatorAdapter.cs
- SignatureDescription.cs
- NativeRightsManagementAPIsStructures.cs
- CompensatableTransactionScopeActivityDesigner.cs
- Geometry3D.cs
- TypedCompletedAsyncResult.cs
- KeyboardEventArgs.cs
- MachineKeyValidationConverter.cs
- SqlUserDefinedTypeAttribute.cs
- RouteItem.cs
- OleDbMetaDataFactory.cs
- NullableDoubleAverageAggregationOperator.cs
- MatrixValueSerializer.cs
- ExpressionList.cs
- __Filters.cs
- WebAdminConfigurationHelper.cs
- AcceleratedTokenProvider.cs
- GenericTypeParameterConverter.cs
- ActiveDocumentEvent.cs
- SchemaNamespaceManager.cs
- PageFunction.cs
- XmlWriterSettings.cs
- WebSysDescriptionAttribute.cs
- SystemResources.cs
- DirtyTextRange.cs
- DropShadowEffect.cs
- contentDescriptor.cs
- WebPartTransformerAttribute.cs
- XappLauncher.cs
- ECDiffieHellmanCng.cs
- CipherData.cs
- ResourceReferenceKeyNotFoundException.cs
- ObjectSet.cs
- NavigationPropertyAccessor.cs
- MatrixAnimationUsingKeyFrames.cs
- ArrayConverter.cs
- Vector3DAnimationUsingKeyFrames.cs
- FormViewCommandEventArgs.cs
- shaperfactoryquerycacheentry.cs
- VirtualizingStackPanel.cs
- AssemblySettingAttributes.cs
- DataGridPreparingCellForEditEventArgs.cs
- PopupEventArgs.cs
- EntityDesignPluralizationHandler.cs
- PointAnimation.cs
- TypeResolver.cs
- PropertyRecord.cs
- ToolStripItem.cs
- TextRange.cs
- XmlSchemaSimpleTypeRestriction.cs
- SequentialOutput.cs
- ExpressionParser.cs
- ComponentDesigner.cs
- SecurityUtils.cs
- NativeActivityTransactionContext.cs
- PropertyMap.cs
- Pointer.cs
- _FtpControlStream.cs
- ReturnType.cs
- Mapping.cs
- XXXOnTypeBuilderInstantiation.cs
- BaseComponentEditor.cs
- ContextActivityUtils.cs
- SecurityDocument.cs
- UserInitiatedNavigationPermission.cs
- CorrelationQueryBehavior.cs
- PersonalizableTypeEntry.cs
- CompositeControl.cs
- Ops.cs
- UriScheme.cs