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
- PrintController.cs
- TreeSet.cs
- ReadOnlyDataSource.cs
- RadialGradientBrush.cs
- FuncTypeConverter.cs
- DBConnection.cs
- Decoder.cs
- SwitchLevelAttribute.cs
- ServiceModelReg.cs
- _emptywebproxy.cs
- SignatureHelper.cs
- Missing.cs
- XmlNavigatorStack.cs
- UnsafeNativeMethods.cs
- SocketInformation.cs
- CharacterHit.cs
- SplitContainerDesigner.cs
- XmlElementAttributes.cs
- DesignerDataParameter.cs
- OracleTransaction.cs
- SqlUtils.cs
- DataGridViewTopRowAccessibleObject.cs
- Constants.cs
- IndexingContentUnit.cs
- IChannel.cs
- DataControlField.cs
- CellTreeSimplifier.cs
- RegexStringValidatorAttribute.cs
- TraceXPathNavigator.cs
- LoginName.cs
- SessionStateSection.cs
- Form.cs
- ExpressionCopier.cs
- CodeDomDesignerLoader.cs
- PointLight.cs
- ButtonBaseAutomationPeer.cs
- CheckBoxPopupAdapter.cs
- VisualStyleRenderer.cs
- SpellCheck.cs
- MSG.cs
- DocumentPaginator.cs
- DataKey.cs
- XPathParser.cs
- ResourcePool.cs
- HtmlToClrEventProxy.cs
- LocatorPart.cs
- Ipv6Element.cs
- CDSsyncETWBCLProvider.cs
- DiscreteKeyFrames.cs
- WaitHandle.cs
- SecurityKeyUsage.cs
- AttributeConverter.cs
- MarkupObject.cs
- SchemaType.cs
- Membership.cs
- BasicExpandProvider.cs
- RenderDataDrawingContext.cs
- MenuItem.cs
- MissingMemberException.cs
- TypeConverterHelper.cs
- ListViewItemSelectionChangedEvent.cs
- RoleManagerSection.cs
- UniqueID.cs
- ObjectSerializerFactory.cs
- COAUTHINFO.cs
- DesignerObject.cs
- EnumBuilder.cs
- ThreadInterruptedException.cs
- PrintDialogException.cs
- DefaultMemberAttribute.cs
- TextBox.cs
- DirectoryObjectSecurity.cs
- RootBrowserWindowAutomationPeer.cs
- SqlExpressionNullability.cs
- SerializationBinder.cs
- MetadataItemEmitter.cs
- EntityDesignerBuildProvider.cs
- HttpAsyncResult.cs
- CompilerGeneratedAttribute.cs
- FieldNameLookup.cs
- MenuItemStyleCollectionEditor.cs
- SecurityUtils.cs
- DrawingContextWalker.cs
- exports.cs
- DataSourceXmlTextReader.cs
- ConnectionManagementElement.cs
- GroupLabel.cs
- DataGridCellClipboardEventArgs.cs
- DecimalMinMaxAggregationOperator.cs
- MemberInitExpression.cs
- StrokeNodeOperations.cs
- Stacktrace.cs
- DmlSqlGenerator.cs
- HostnameComparisonMode.cs
- WeakHashtable.cs
- ReadOnlyPropertyMetadata.cs
- SchemeSettingElementCollection.cs
- WmlFormAdapter.cs
- MsmqOutputSessionChannel.cs
- ToolStripItem.cs