给Repeater控件添加分页功能

 

近来一直在做Web开发,其中访问数据库,显示数据库的数据是最常做的事情.ASP.net 2.0为我们提供了GridView , DetailView ,Repeater ,FormView来显示数据,其中,Repeater是最小巧的,最灵活的一个.但与GridView等比起来,其中一个美中不足的地方就是没有分页显示功能.因此,最近几天一直在想办法,Repeater添加分页功能.其中,试过用户控件,用户部件和自定义控件几种方法.个人觉得,最后一种方法扩展的控件,用起来最方便.因此,在此,贴出来.源代码如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
  1using System;
  2
  3using System.Collections;
  4
  5using System.Data;
  6
  7using System.Configuration;
  8
  9using System.Web;
 10
 11using System.Web.Security;
 12
 13using System.Web.UI;
 14
 15using System.Web.UI.WebControls;
 16
 17using System.Web.UI.WebControls.WebParts;
 18
 19using System.Web.UI.HtmlControls;
 20
 21using System.ComponentModel;
 22
 23 
 24
 25 
 26
 27namespace Frontview.WebControls
 28
 29ExpandedBlockStart.gifContractedBlock.gif{
 30
 31    
 32
 33ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
 34
 35    /// PagedRepeater 的摘要说明
 36
 37    /// </summary>

 38
 39    
 40
 41    
 42
 43    public class PagedRepeater : Repeater
 44
 45ExpandedSubBlockStart.gifContractedSubBlock.gif    {
 46
 47        
 48
 49        private PagedDataSource m_pagedDataSource;
 50
 51 
 52
 53ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
 54
 55        /// 当前页
 56
 57        /// </summary>

 58
 59        [
 60
 61        DefaultValue("0"),
 62
 63        Bindable(false),
 64
 65        Category("行为"),
 66
 67        Localizable(true),
 68
 69        Description("当前页")
 70
 71        ]
 72
 73        public int PageIndex
 74
 75ExpandedSubBlockStart.gifContractedSubBlock.gif        {
 76
 77            get
 78
 79ExpandedSubBlockStart.gifContractedSubBlock.gif            {
 80
 81                return this.m_pagedDataSource.CurrentPageIndex;
 82
 83            }

 84
 85            set
 86
 87ExpandedSubBlockStart.gifContractedSubBlock.gif            {
 88
 89                this.m_pagedDataSource.CurrentPageIndex = value;
 90
 91            }

 92
 93        }

 94
 95 
 96
 97ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
 98
 99        /// 每页项数,默认为10
100
101        /// </summary>

102
103        [
104
105         DefaultValue("10"),
106
107         Bindable(false),
108
109         Category("行为"),
110
111         Localizable(true),
112
113         Description("每页项数")
114
115         ]
116
117        public int PageSize
118
119ExpandedSubBlockStart.gifContractedSubBlock.gif        {
120
121            get
122
123ExpandedSubBlockStart.gifContractedSubBlock.gif            {
124
125                return m_pagedDataSource.PageSize;
126
127            }

128
129            set
130
131ExpandedSubBlockStart.gifContractedSubBlock.gif            {
132
133                this.m_pagedDataSource.PageSize = value;
134
135                this.DataBind();
136
137            }

138
139        }

140
141 
142
143 
144
145 
146
147        [
148
149        Description("总页数")
150
151        ]
152
153        public int PageCount
154
155ExpandedSubBlockStart.gifContractedSubBlock.gif        {
156
157            get
158
159ExpandedSubBlockStart.gifContractedSubBlock.gif            {
160
161                return m_pagedDataSource.PageCount;
162
163            }

164
165        }

166
167 
168
169        public PagedRepeater()
170
171ExpandedSubBlockStart.gifContractedSubBlock.gif        
172
173            this.m_pagedDataSource = new PagedDataSource();
174
175            this.m_pagedDataSource.AllowPaging = true;
176
177            
178
179        }

180
181 
182
183        protected override void OnInit(EventArgs e)
184
185ExpandedSubBlockStart.gifContractedSubBlock.gif        {
186
187 
188
189            base.OnInit(e);
190
191            this.m_pagedDataSource.DataSource = this.GetData();
192
193            this.DataSourceID = "";
194
195            this.DataSource = this.m_pagedDataSource;
196
197            this.DataBind();
198
199        }

200
201    }

202
203}

204
205

 

其中,还有一点,不太令我自己满意的地方就是,不能用代码动态改变,扩展后的Repeater控件的DataSourceID和DataSource属性.

转载于:https://www.cnblogs.com/Frontview/archive/2008/11/06/1328256.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值