File: QueryExtender.cs

package info (click to toggle)
mono 6.8.0.105%2Bdfsg-3.3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,284,512 kB
  • sloc: cs: 11,172,132; xml: 2,850,069; ansic: 671,653; cpp: 122,091; perl: 59,366; javascript: 30,841; asm: 22,168; makefile: 20,093; sh: 15,020; python: 4,827; pascal: 925; sql: 859; sed: 16; php: 1
file content (130 lines) | stat: -rw-r--r-- 4,565 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
namespace System.Web.UI.WebControls {
    using System.Web.UI.WebControls.Expressions;
    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")]
    [ToolboxBitmap(typeof(QueryExtender), "QueryExtender.bmp")]
    [Designer("System.Web.UI.Design.QueryExtenderDesigner, " + AssemblyRef.SystemWebExtensionsDesign)]
    [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);
                    }
                    _dataSource = DataBoundControlHelper.FindControl(this, TargetControlID) as IQueryableDataSource;
                    // 
                    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#")]
        protected internal override void OnInit(EventArgs e) {
            if (!DesignMode) {
                DataSource.QueryCreated += new EventHandler<QueryCreatedEventArgs>(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();
            }
        }
    }
}