Code:
/ DotNET / DotNET / 8.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
- X509WindowsSecurityToken.cs
- XmlResolver.cs
- TaiwanLunisolarCalendar.cs
- shaper.cs
- StateFinalizationDesigner.cs
- mediapermission.cs
- AssociationTypeEmitter.cs
- DataServiceConfiguration.cs
- ListViewCancelEventArgs.cs
- RepeaterItem.cs
- ActivityTypeResolver.xaml.cs
- FocusWithinProperty.cs
- EntryWrittenEventArgs.cs
- TemplatePropertyEntry.cs
- XamlInt32CollectionSerializer.cs
- Adorner.cs
- FontNameConverter.cs
- SmtpMail.cs
- VectorValueSerializer.cs
- NamespaceMapping.cs
- Permission.cs
- RequestResponse.cs
- ToolStripItemTextRenderEventArgs.cs
- XmlSerializerAssemblyAttribute.cs
- BrowserDefinitionCollection.cs
- XslUrlEditor.cs
- HtmlGenericControl.cs
- WebPartRestoreVerb.cs
- MultiPropertyDescriptorGridEntry.cs
- BamlCollectionHolder.cs
- BasicExpressionVisitor.cs
- AppDomain.cs
- DbLambda.cs
- DataGridViewLinkCell.cs
- ErrorEventArgs.cs
- LayoutEvent.cs
- BuildResult.cs
- RegistrySecurity.cs
- ConstantSlot.cs
- PropertyItemInternal.cs
- OptimizerPatterns.cs
- ExtensionSurface.cs
- ConfigurationStrings.cs
- SemaphoreSecurity.cs
- AdPostCacheSubstitution.cs
- SequentialOutput.cs
- PathParser.cs
- ItemsPresenter.cs
- ScrollBar.cs
- AspCompat.cs
- FactoryId.cs
- DoWhileDesigner.xaml.cs
- DbConnectionStringCommon.cs
- SymmetricKeyWrap.cs
- HttpModuleCollection.cs
- FixedTextPointer.cs
- CellRelation.cs
- Unit.cs
- Point3DCollectionValueSerializer.cs
- ReversePositionQuery.cs
- ArcSegment.cs
- Columns.cs
- ValueChangedEventManager.cs
- ValidationService.cs
- ProviderUtil.cs
- TimelineClockCollection.cs
- StackSpiller.Temps.cs
- Win32SafeHandles.cs
- CodeCompileUnit.cs
- SchemaTableColumn.cs
- FunctionImportElement.cs
- DataGridViewCellEventArgs.cs
- Win32Exception.cs
- DataObjectAttribute.cs
- DataColumn.cs
- QilLoop.cs
- CannotUnloadAppDomainException.cs
- _DomainName.cs
- HttpGetClientProtocol.cs
- TextSyndicationContentKindHelper.cs
- URLMembershipCondition.cs
- GPPOINT.cs
- PrintDialogDesigner.cs
- XmlElementList.cs
- CryptoKeySecurity.cs
- SourceCollection.cs
- EntityFrameworkVersions.cs
- PageBuildProvider.cs
- _ProxyRegBlob.cs
- ComplexLine.cs
- SharedUtils.cs
- ScaleTransform3D.cs
- SQLByte.cs
- ReaderWriterLock.cs
- ServiceNotStartedException.cs
- ValidatingReaderNodeData.cs
- SpellerStatusTable.cs
- HttpContextServiceHost.cs
- VectorCollectionConverter.cs
- BindingMemberInfo.cs