File: TemplatePagerField.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 (123 lines) | stat: -rw-r--r-- 4,666 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
//------------------------------------------------------------------------------
// <copyright file="TemplatePagerField.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------

using System;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Web;
using System.Web.Resources;
using System.Web.UI;

namespace System.Web.UI.WebControls {
    public class TemplatePagerField : DataPagerField {
        private int _startRowIndex;
        private int _maximumRows;
        private int _totalRowCount;
        private ITemplate _pagerTemplate;

        private static readonly object EventPagerCommand = new object();
        private EventHandlerList _events;

        public TemplatePagerField() {
        }
                
        /// <devdoc>
        /// Indicates the list of event handler delegates for the view. This property is read-only.
        /// </devdoc>
        private EventHandlerList Events {
            get {
                if (_events == null) {
                    _events = new EventHandlerList();
                }
                return _events;
            }
        }
                
        /// <devdoc>
        /// <para> Specifies the <see cref='System.Web.UI.ITemplate' qualify='true'/> that defines how items are rendered. </para>
        /// </devdoc>
        [
            Browsable(false),
            DefaultValue(null),
            ResourceDescription("TemplatePagerField_PagerTemplate"),
            PersistenceMode(PersistenceMode.InnerProperty),
            TemplateContainer(typeof(DataPagerFieldItem), BindingDirection.TwoWay)
        ]
        public virtual ITemplate PagerTemplate {
            get {
                return _pagerTemplate;
            }
            set {
                _pagerTemplate = value;
                OnFieldChanged();
            }
        }

        [
        Category("Action"),
        ResourceDescription("TemplatePagerField_OnPagerCommand")
        ]
        public event EventHandler<DataPagerCommandEventArgs> PagerCommand {
            add {
                Events.AddHandler(EventPagerCommand, value);
            }
            remove {
                Events.RemoveHandler(EventPagerCommand, value);
            }
        }
        
        protected override void CopyProperties(DataPagerField newField) {
            ((TemplatePagerField)newField).PagerTemplate = PagerTemplate;
            base.CopyProperties(newField);
        }

        protected override DataPagerField CreateField() {
            return new TemplatePagerField();
        }

        [SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers", MessageId = "0#")]
        public override void HandleEvent(CommandEventArgs e) {
            DataPagerFieldItem item = null;
            DataPagerFieldCommandEventArgs cea = e as DataPagerFieldCommandEventArgs;
            if (cea != null) {
                item = cea.Item;
            }

            DataPagerCommandEventArgs pagerEventArgs = new DataPagerCommandEventArgs(this, _totalRowCount, e, item);
            OnPagerCommand(pagerEventArgs);

            if (pagerEventArgs.NewStartRowIndex != -1) {
                DataPager.SetPageProperties(pagerEventArgs.NewStartRowIndex, pagerEventArgs.NewMaximumRows, true);
            }

        }

        public override void CreateDataPagers(DataPagerFieldItem container, int startRowIndex, int maximumRows, int totalRowCount, int fieldIndex) {
            _startRowIndex = startRowIndex;
            _maximumRows = maximumRows;
            _totalRowCount = totalRowCount;

            if (_pagerTemplate != null) {
                _pagerTemplate.InstantiateIn(container);
            }
        }

        /// <devdoc>
        /// <para>Raises the <see cref='System.Web.UI.WebControls.ListView.TotalRowCountAvailable'/>event of a <see cref='System.Web.UI.WebControls.ListView'/>.</para>
        /// </devdoc>
        [SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers", MessageId = "0#")]
        protected virtual void OnPagerCommand(DataPagerCommandEventArgs e) {
            EventHandler<DataPagerCommandEventArgs> handler = (EventHandler<DataPagerCommandEventArgs>)Events[EventPagerCommand];
            if (handler != null) {
                handler(this, e);
            }
            else {
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, AtlasWeb.TemplatePagerField_UnhandledEvent, "PagerCommand"));
            }
        }
    }
}