DataSourceHelper.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / DataSourceHelper.cs / 1305376 / DataSourceHelper.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

using System; 
using System.Collections; 
using System.ComponentModel;
using System.ComponentModel.Design; 
using System.Data;
using System.Diagnostics;

namespace System.Web.UI.MobileControls 
{
 
    /* 
     * Data Source Helper class. Copied fairly verbatim from ASP.NET code base, and modified
     * to match our coding standards and, more importantly, use our exceptions. 
     * The ASP.NET file is /system/web/ui/DataSourceHelper.cs (a private class)
     *
     * Copyright (c) 2000 Microsoft Corporation
     */ 

    [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] 
    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.
                    // (Ignore DataMember parameter.)
                    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 ((dataMember == null) || (dataMember.Length == 0)) 
                        {
                            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 ArgumentException( 
                            SR.GetString(SR.DataSourceHelper_MissingDataMember,
                                         dataMember));
                    }
                    else 
                    {
                        throw new ArgumentException( 
                            SR.GetString(SR.DataSourceHelper_DataSourceWithoutDataMember, 
                                         "List DataSource"));
                    } 
                }
            }

            if (dataSource is IEnumerable) 
            {
                return (IEnumerable)dataSource; 
            } 

            return null; 
        }
    }
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK