QueryableDataSource.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 / xsp / System / Extensions / UI / WebControls / QueryableDataSource.cs / 1305376 / QueryableDataSource.cs

                            #if ORYX_VNEXT 
namespace Microsoft.Web.Data.UI.WebControls {
#else
namespace System.Web.UI.WebControls {
#endif 
    using System;
    using System.Collections; 
    using System.Collections.ObjectModel; 
    using System.ComponentModel;
    using System.Web.UI; 
    using System.Web.UI.WebControls;
    using System.Web.Resources;
    using System.Diagnostics.CodeAnalysis;
    using System.Globalization; 
#if ORYX_VNEXT
    using Microsoft.Web.Data.UI.WebControls.Expressions; 
    using System.Web; 
#else
    using System.Web.UI.WebControls.Expressions; 
#endif

    [
    ParseChildren(true), 
    PersistChildren(false)
    ] 
    public abstract class QueryableDataSource : DataSourceControl, IQueryableDataSource { 
        private const string DefaultViewName = "DefaultView";
        private ReadOnlyCollection _viewNames; 
        private QueryableDataSourceView _view;
#if !ORYX_VNEXT
        private readonly new IPage _page;
#else 
        private readonly IPage _page;
#endif 
        internal QueryableDataSource(IPage page) { 
            _page = page;
        } 

        internal QueryableDataSource(QueryableDataSourceView view) {
            _view = view;
        } 

        protected QueryableDataSource() { 
 
        }
 
        [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification="View is used by derived types")]
        private QueryableDataSourceView View {
            get {
                if (_view == null) { 
                    _view = CreateQueryableView();
                } 
                return _view; 
            }
        } 

        internal IPage IPage {
            get {
                if (_page != null) { 
                    return _page;
                } 
                else { 
                    Page page = Page;
                    if (page == null) { 
                        throw new InvalidOperationException(AtlasWeb.Common_PageCannotBeNull);
                    }
                    return new PageWrapper(page);
                } 
            }
        } 
 
        protected abstract QueryableDataSourceView CreateQueryableView();
 
        protected override ICollection GetViewNames() {
            if (_viewNames == null) {
                _viewNames = new ReadOnlyCollection(new[] { DefaultViewName });
            } 
            return _viewNames;
        } 
 
        protected override DataSourceView GetView(string viewName) {
            if (viewName == null) { 
                throw new ArgumentNullException("viewName");
            }
            // viewName comes from the DataMember property on the databound control and is an empty string
            // by default.  An empty string should be treated as if it were the default view name. 
            if ((viewName.Length != 0) &&
                !String.Equals(viewName, DefaultViewName, StringComparison.OrdinalIgnoreCase)) { 
                throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, 
                    AtlasWeb.LinqDataSource_InvalidViewName, ID, DefaultViewName), "viewName");
            } 
            return View;
        }

        [SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers", MessageId = "0#")] 
#if ORYX_VNEXT
        protected override void OnInit(EventArgs e) { 
#else 
        protected internal override void OnInit(EventArgs e) {
#endif 
            base.OnInit(e);
            IPage.LoadComplete += new EventHandler(OnPageLoadComplete);
        }
 
        // Used for unit testing only
        internal void SetView(QueryableDataSourceView view) { 
            _view = view; 
        }
 
        protected virtual void UpdateParameterVales() {
            View.WhereParameters.UpdateValues(Context, this);
            View.OrderGroupsByParameters.UpdateValues(Context, this);
            View.GroupByParameters.UpdateValues(Context, this); 
            View.OrderByParameters.UpdateValues(Context, this);
            View.SelectNewParameters.UpdateValues(Context, this); 
        } 

        private void OnPageLoadComplete(object sender, EventArgs e) { 
            UpdateParameterVales();
        }

        protected override object SaveViewState() { 
            Pair myState = new Pair();
            myState.First = base.SaveViewState(); 
            if (_view != null) { 
                myState.Second = ((IStateManager)_view).SaveViewState();
            } 
            if ((myState.First == null) &&
                (myState.Second == null)) {
                return null;
            } 
            return myState;
        } 
 
        protected override void TrackViewState() {
            base.TrackViewState(); 
            if (_view != null) {
                ((IStateManager)_view).TrackViewState();
            }
        } 

        protected override void LoadViewState(object savedState) { 
            if (savedState == null) { 
                base.LoadViewState(null);
            } 
            else {
                Pair myState = (Pair)savedState;
                base.LoadViewState(myState.First);
                if (myState.Second != null) { 
                    ((IStateManager)View).LoadViewState(myState.Second);
                } 
            } 
        }
 
        #region IQueryableDataSource Members

        public void RaiseViewChanged() {
            View.RaiseViewChanged(); 
        }
 
        public event EventHandler QueryCreated { 
            add {
                View.QueryCreated += value; 
            }
            remove {
                View.QueryCreated -= value;
            } 
        }
 
        #endregion 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

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