QueryExtender.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 / QueryExtender.cs / 1305376 / QueryExtender.cs

                            #if ORYX_VNEXT 
namespace Microsoft.Web.Data.UI.WebControls {
    using System.Web;
    using Microsoft.Web.Data.UI.WebControls.Expressions;
#else 
namespace System.Web.UI.WebControls {
    using System.Web.UI.WebControls.Expressions; 
#endif 
    using System;
    using System.ComponentModel; 
    using System.Drawing;
    using System.Diagnostics.CodeAnalysis;
    using System.Globalization;
    using System.Security.Permissions; 
    using System.Web.UI;
    using System.Web.Resources; 
 
    [TargetControlType(typeof(IQueryableDataSource))]
    [NonVisualControl()] 
    [DefaultProperty("TargetControlID")]
#if !ORYX_VNEXT
    [ToolboxBitmap(typeof(QueryExtender), "QueryExtender.bmp")]
    [Designer("System.Web.UI.Design.QueryExtenderDesigner, " + AssemblyRef.SystemWebExtensionsDesign)] 
#endif
    [ParseChildren(true, "Expressions")] 
    [PersistChildren(false)] 
    public class QueryExtender : Control {
        private QueryExpression _query; 
        private string _targetControlID;

        private IQueryableDataSource _dataSource;
 
        public QueryExtender() {
        } 
 
        internal QueryExtender(IQueryableDataSource dataSource) {
            _dataSource = dataSource; 
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
        public virtual IQueryableDataSource DataSource {
            get { 
                if (_dataSource == null) { 
                    if (String.IsNullOrEmpty(TargetControlID)) {
                        throw new InvalidOperationException(AtlasWeb.DataSourceControlExtender_TargetControlIDMustBeSpecified); 
                    }
#if ORYX_VNEXT
                    _dataSource = DataSourceExtensions.FindControl(this, TargetControlID) as IQueryableDataSource;
#else 
                    _dataSource = DataBoundControlHelper.FindControl(this, TargetControlID) as IQueryableDataSource;
#endif 
                    // 
                    if (_dataSource == null) {
                        throw new InvalidOperationException( 
                            String.Format(CultureInfo.CurrentCulture,
                            AtlasWeb.QueryExtender_DataSourceMustBeIQueryableDataSource,
                            TargetControlID));
                    } 
                }
                return _dataSource; 
            } 
        }
 
        [
        Category("Behavior"),
        ResourceDescription("QueryExtender_Expressions"),
        PersistenceMode(PersistenceMode.InnerDefaultProperty), 
        ]
        public DataSourceExpressionCollection Expressions { 
            get { 
                return Query.Expressions;
            } 
        }

        [
        Category("Behavior"), 
        DefaultValue(""),
        IDReferenceProperty, 
        ResourceDescription("ExtenderControl_TargetControlID"), 
        SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "ID"),
        ] 
        public virtual string TargetControlID {
            get {
                return _targetControlID ?? String.Empty;
            } 
            set {
                if (_targetControlID != value) { 
                    _dataSource = null; 
                    _targetControlID = value;
                } 
            }
        }

        private QueryExpression Query { 
            get {
                if (_query == null) { 
                    _query = new QueryExpression(); 
                }
                return _query; 
            }
        }

 
        [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
            if (!DesignMode) {
                DataSource.QueryCreated += new EventHandler(OnDataSourceQueryCreated);
                // Initialize the Query 
                Query.Initialize(this, Context, DataSource);
            } 
 
            base.OnInit(e);
        } 

        private void OnDataSourceQueryCreated(object sender, QueryCreatedEventArgs e) {
            e.Query = Query.GetQueryable(e.Query);
        } 

        protected override object SaveViewState() { 
            Pair p = new Pair(); 
            p.First = base.SaveViewState();
            p.Second = _query != null ? ((IStateManager)_query.Expressions).SaveViewState() : null; 
            return p;
        }

        protected override void LoadViewState(object savedState) { 
            Pair p = (Pair)savedState;
            base.LoadViewState(p.First); 
            if (p.Second != null) { 
                ((IStateManager)Query.Expressions).LoadViewState(p.Second);
            } 
        }

        protected override void TrackViewState() {
            base.TrackViewState(); 
            if (_query != null) {
                ((IStateManager)_query.Expressions).TrackViewState(); 
            } 
        }
    } 
}

// 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