在分页设置的时候发现http://www.webdiyer.com/ 写的分页控件实在是好用,而且是开源的,真是佩服呀,一直没有机会感谢一下,使用了很久,这次客户提了一些需求正好安排一天时间改进了一下,也是很不错的。
说明:增强的了内容是在4.3.3的版本基本上进行修改的。只是简单的测试版,我只发了几个小时的时间修改的。还没有经过严格的测试,如果大家发现有什么问题,请回复,谢谢
1
//AspNetPager分页控件源代码:
2
//版权所有:陕西省吴旗县 Webdiyer(yhaili@21cn.com)(Web site: www.webdiyer.com);
3
//此源代码仅供学习参考,不得用作任何商业用途;
4
//若需修改并重新编译该控件,请保留完整的源代码的版权信息!
5
//有关控件升级及新控件发布信息,请留意 www.webdiyer.com 。
6
//版本4.3.3
7
//增强版 (修改自4.3.3版本)
8
//描述:增加了可自定义每页的记录数。
9
//modify by liubiqu(liubiqu@sina.com) [http://www.cnblogs.com/liubiqu]
10
//DateTime: 2005-06-10
11
12
using System;
13
using System.Collections;
14
using System.Collections.Specialized;
15
using System.ComponentModel;
16
using System.IO;
17
using System.Text;
18
using System.Web.UI;
19
using System.Web.UI.Design.WebControls;
20
using System.Web.UI.WebControls;
21
22
namespace EOffice.Components
23
{
24
#region AspNetPager Server Control
25
26
#region 控件说明及示例
27
/// <summary>
28
/// 用于ASP.NET Web应用程序中对数据进行分页的的服务器控件。
29
/// </summary>
30
/// <remarks>不同于DataGrid控件,AspNetPager分页控件本身并不显示任何数据,而只显示页导航元素,数据在页面上的显示方式与该控件无关。该控件可以为DataGrid、DataList、Repeater以及自定义控件进行分页,配合Sql存储过程,分页性能较使用DataGrid分页有明显提升,尤其是当数据量大时性能可提升数倍!
31
/// <p>AspNetPager 2.0 中新增了通过Url来分页的功能,这使得访问者可以直接输入相应的Url来访问任何页面,并且搜索引擎也可以直接检索每个页面,若使用DataGrid的分页功能,这是无法实现的。</p>
32
/// <p>要使用 AspNetPager 分页控件,必须最少指定它的 <see cref="RecordCount"/> 属性,指定并编写 <see cref="PageChanged"/> 事件的处理程序。
33
/// <see cref="RecordCount"/> 属性指定要分页的所有数据的总项数,若未指定该值或该值小于等于 <see cref="PageSize"/> ,则AspNetPager控件不会显示任何内容。
34
/// 若未指定并编写 <see cref="PageChanged"/> 事件处理程序,则当用户点击页导航元素或在页索引文本框中手式输入页索引并提交时AspNetPager不会跳转到指定的页。
35
/// AspNetPager控件的分页方法和DataGrid基本相同,即在它的 <see cref="PageChanged"/> 事件处理程序中将传递事件数据的 <see cref="PageChangedEventArgs"/> 的 <see cref="PageChangedEventArgs.NewPageIndex"/>值赋给 AspNetPager的 <see cref="CurrentPageIndex"/>属性,然后重新将新的数据与数据显示控件绑定。 </p></remarks>
36
/// <example>以下示例说明如何用AspNetPager对DataGrid进行分页。
37
/// <code><![CDATA[
38
///<%@ Page Language="C#"%>
39
///<%@ Import Namespace="System.Data"%>
40
///<%@Import Namespace="System.Data.SqlClient"%>
41
///<%@Import Namespace="System.Configuration"%>
42
///<%@Register TagPrefix="Webdiyer" Namespace="Wuqi.Webdiyer" Assembly="aspnetpager"%>
43
///<HTML>
44
///<HEAD>
45
///<TITLE>Welcome to Webdiyer.com </TITLE>
46
/// <script runat="server">
47
/// SqlConnection conn;
48
/// SqlCommand cmd;
49
/// void Page_Load(object src,EventArgs e)
50
/// {
51
/// conn=new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
52
/// if(!Page.IsPostBack)
53
/// {
54
/// cmd=new SqlCommand("GetNews",conn);
55
/// cmd.CommandType=CommandType.StoredProcedure;
56
/// cmd.Parameters.Add("@pageindex",1);
57
/// cmd.Parameters.Add("@pagesize",1);
58
/// cmd.Parameters.Add("@docount",true);
59
/// conn.Open();
60
/// pager.RecordCount=(int)cmd.ExecuteScalar();
61
/// conn.Close();
62
/// BindData();
63
/// }
64
/// }
65
///
66
/// void BindData()
67
/// {
68
/// cmd=new SqlCommand("GetNews",conn);
69
/// cmd.CommandType=CommandType.StoredProcedure;
70
/// cmd.Parameters.Add("@pageindex",pager.CurrentPageIndex);
71
/// cmd.Parameters.Add("@pagesize",pager.PageSize);
72
/// cmd.Parameters.Add("@docount",false);
73
/// conn.Open();
74
/// dataGrid1.DataSource=cmd.ExecuteReader();
75
/// dataGrid1.DataBind();
76
/// conn.Close();
77
/// pager.CustomInfoText="记录总数:<font color=\"blue\"><b>"+pager.RecordCount.ToString()+"</b></font>";
78
/// pager.CustomInfoText+=" 总页数:<font color=\"blue\"><b>"+pager.PageCount.ToString()+"</b></font>";
79
/// pager.CustomInfoText+=" 当前页:<font color=\"red\"><b>"+pager.CurrentPageIndex.ToString()+"</b></font>";
80
/// }
81
/// void ChangePage(object src,PageChangedEventArgs e)
82
/// {
83
/// pager.CurrentPageIndex=e.NewPageIndex;
84
/// BindData();
85
/// }
86
/// </script>
87
/// <meta http-equiv="Content-Language" content="zh-cn">
88
/// <meta http-equiv="content-type" content="text/html;charset=gb2312">
89
/// <META NAME="Generator" CONTENT="EditPlus">
90
/// <META NAME="Author" CONTENT="Webdiyer(yhaili@21cn.com)">
91
/// </HEAD>
92
/// <body>
93
/// <form runat="server" ID="Form1">
94
/// <asp:DataGrid id="dataGrid1" runat="server" />
95
///
96
/// <Webdiyer:AspNetPager id="pager"
97
/// runat="server"
98
/// PageSize="8"
99
/// NumericButtonCount="8"
100
/// ShowCustomInfoSection="left"
101
/// PagingButtonSpacing="0"
102
/// ShowInputBox="always"
103
/// CssClass="mypager"
104
/// HorizontalAlign="right"
105
/// OnPageChanged="ChangePage"
106
/// SubmitButtonText="转到"
107
/// NumericButtonTextFormatString="[{0}]"/>
108
///
109
/// </form>
110
/// </body>
111
///</HTML>
112
/// ]]>
113
/// </code>
114
/// <p>下面是该示例所用的Sql Server存储过程:</p>
115
/// <code>
116
/// <![CDATA[
117
///CREATE procedure GetNews
118
/// (@pagesize int,
119
/// @pageindex int,
120
/// @docount bit)
121
/// as
122
/// set nocount on
123
/// if(@docount=1)
124
/// select count(id) from news
125
/// else
126
/// begin
127
/// declare @indextable table(id int identity(1,1),nid int)
128
/// declare @PageLowerBound int
129
/// declare @PageUpperBound int
130
/// set @PageLowerBound=(@pageindex-1)*@pagesize
131
/// set @PageUpperBound=@PageLowerBound+@pagesize
132
/// set rowcount @PageUpperBound
133
/// insert into @indextable(nid) select id from news order by addtime desc
134
/// select O.id,O.source,O.title,O.addtime from news O,@indextable t where O.id=t.nid
135
/// and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id
136
/// end
137
/// set nocount off
138
///GO
139
/// ]]>
140
/// </code></example>
141
#endregion
142
143
[DefaultProperty("PageSize")]
144
[DefaultEvent("PageChanged")]
145
[ParseChildren(false)]
146
[PersistChildren(false)]
147
[Description("专用于ASP.Net Web应用程序的分页控件")]
148
[Designer(typeof(PagerDesigner))]
149
[ToolboxData("<{0}:AspNetPager runat=server></{0}:AspNetPager>")]
150
public class AspNetPager:Panel,INamingContainer,IPostBackEventHandler,IPostBackDataHandler
151
{
152
private string cssClassName;
153
private string urlPageIndexName="page";
154
private string urlPageSize = "pagesize";//TODO:var urlPageSize add by liubiqu 2005-6-10
155
private bool urlPaging=false;
156
private string inputPageIndex;
157
private string selectPageSize; //TODO:var selectPageSize add by liubiqu 2005-6-10
158
private string currentUrl=null;
159
private NameValueCollection urlParams=null;
160
161
#region Properties
162
163
#region Navigation Buttons
164
165
/// <summary>
166
/// 获取或设置一个值,该值批示当鼠标指针悬停在导航按钮上时是否显示工具提示。
167
/// </summary>
168
[Browsable(true),
169
Category("导航按钮"),
170
DefaultValue(true),
171
Description("指定当鼠标停留在导航按钮上时,是否显示工具提示")]
172
public bool ShowNavigationToolTip
173
{
174
get
175
{
176
object obj=ViewState["ShowNavigationToolTip"];
177
return (obj==null)?true:(bool)obj;
178
}
179
set
180
{
181
ViewState["ShowNavigationToolTip"]=value;
182
}
183
}
184
185
/// <summary>
186
/// 获取或设置导航按钮工具提示文本的格式。
187
/// </summary>
188
[Browsable(true),
189
Category("导航按钮"),
190
DefaultValue("转到第{0}页"),
191
Description("页导航按钮工具提示文本的格式")]
192
public string NavigationToolTipTextFormatString
193
{
194
get
195
{
196
object obj=ViewState["NavigationToolTipTextFormatString"];
197
return (obj==null)?"转到第{0}页":(string)obj;
198
}
199
set
200
{
201
string tip=value;
202
if(tip.Trim().Length<1&&tip.IndexOf("{0}")<0)
203
tip="{0}";
204
ViewState["NavigationToolTipTextFormatString"]=tip;
205
}
206
}
207
208
/// <summary>
209
/// 获取或设置一个值,该值指示是否将页索引按钮用中文数字代替。
210
/// </summary>
211
/// <remarks>
212
/// 将该值设为true并且未使用图片按钮时,页索引按钮中的数值1、2、3等将会被中文字符一、二、三等代替。
213
/// </remarks>
214
[Browsable(true),
215
Category("导航按钮"),
216
DefaultValue(false),
217
Description("是否将页索引数值按钮用中文数字一、二、三等代替")]
218
public bool ChinesePageIndex
219
{
220
get
221
{
222
object obj=ViewState["ChinesePageIndex"];
223
return (obj==null)?false:(bool)obj;
224
}
225
set
226
{
227
ViewState["ChinesePageIndex"]=value;
228
}
229
}
230
231
/// <summary>
232
/// 获取或设置页索引数值导航按钮上文字的显示格式。
233
/// </summary>
234
/// <value>
235
/// 字符串,指定页索引数值按钮上文字的显示格式,默认值为<see cref="String.Empty"/>,即未设置该属性。</value>
236
/// <remarks>
237
/// 使用NumericButtonTextFormatString属性指定页索引数值按钮的显示格式,如未设置该值时索引按钮文本将会是:1 2 3
,设置该值将改变索引按钮文本的显示格式,
238
/// 如将该值设为“[{0}]”则索引文本会显示为:[1] [2] [3]
,将该值设为“-{0}-”则会使索引文本变为:-1- -2- -3-
。
239
/// </remarks>
240
[Browsable(true),
241
DefaultValue(""),
242
Category("导航按钮"),
243
Description("页索引数值按钮上文字的显示格式")]
244
public string NumericButtonTextFormatString
245
{
246
get
247
{
248
object obj=ViewState["NumericButtonTextFormatString"];
249
return (obj==null)?String.Empty:(string)obj;
250
}
251
set
252
{
253
ViewState["NumericButtonTextFormatString"]=value;
254
}
255
}
256
257
/// <summary>
258
/// 获取或设置分页导航按钮的类型,即使用文字还是图片。
259
/// </summary>
260
/// <remarks>
261
/// 要使用图片按钮,您需要准备以下图片:从0到9的十个数值图片(当ShowPageIndex设为true时),第一页、上一页、下一页、最后一页及更多页(
)五个按钮图片(当ShowFirstLast及ShowPrevNext都设为true时),
262
/// 若需要使当前页索引的数值按钮不同于别的页索引数值按钮,则还需准备当前页索引的按钮图片;
263
/// 若需要使已禁用的第一页、上一页、下一页及最后一页按钮图片不同于正常的按钮图片,则还需准备这四个按钮在禁用状态下的图片;
264
/// <p><b>图片文件的命名规则如下:</b></p>
265
/// <p>从0到9十张数值按钮图片必须命名为“数值+ButtonImageNameExtension+ButtonImageExtension”,其中的ButtonImageNameExtension可以不用设置,
266
/// ButtonImageExtension是图片文件的后缀名,如 .gif或 .jpg等可以在浏览器中显示的任何图片文件类型。如页索引“1”的图片文件可命名为“1.gif”或“1.jpg”,
267
/// 当您有两套或更多套图片文件时,可以通过指定ButtonImageNameExtension属性值来区分不同套的图片,如第一套图片可以不用设ButtonImageNameExtension,则图片文件名类似于“1.gif”、“2.gif”等等,而第二套图片则设置ButtonImageNameExtension为“f”,图片文件名类似于“1f.gif”,“2f.gif”等等。</p>
268
/// <p>第一页按钮的图片文件名以“first”开头,上一页按钮图片名以“prev”开头,下一页按钮图片名以“next”开头,最后一页按钮图片名以“last”开头,更多页按钮图片名以“more”开头,是否使用ButtonImageNameExtension取决于数值按钮的设置及是否有更多套图片。</p>
269
/// </remarks>
270
/// <example>
271
/// 以下代码片段示例如果使用图片按钮:
272
/// <p>
273
/// <code><![CDATA[
274
/// <Webdiyer:AspNetPager runat="server"
275
/// id="pager1"
276
/// OnPageChanged="ChangePage"
277
/// PagingButtonType="image"
278
/// ImagePath="images"
279
/// ButtonImageNameExtension="n"
280
/// DisabledButtonImageNameExtension="g"
281
/// ButtonImageExtension="gif"
282
/// CpiButtonImageNameExtension="r"
283
/// PagingButtonSpacing=5/>
284
/// ]]>
285
/// </code>
286
/// </p>
287
/// </example>
288
[Browsable(true),
289
DefaultValue(PagingButtonType.Text),
290
Category("导航按钮"),
291
Description("分页导航按钮的类型,是使用文字还是图片")]
292
public PagingButtonType PagingButtonType
293
{
294
get
295
{
296
object obj=ViewState["PagingButtonType"];
297
return (obj==null)?PagingButtonType.Text:(PagingButtonType)obj;
298
}
299
set
300
{
301
ViewState["PagingButtonType"]=value;
302
}
303
}
304
305
/// <summary>
306
/// 获取或设置页导航数值按钮的类型,该值仅当PagingButtonType设为Image时才有效。
307
/// </summary>
308
/// <remarks>
309
/// 当您将PagingButtonType设为Image当又不想让页索引数值按钮使用图片时,可以将该值设为Text,这会使页索引数据按钮使用文本而不是图片按钮。
310
/// </remarks>
311
[Browsable(true),
312
DefaultValue(PagingButtonType.Text),
313
Category("导航按钮"),
314
Description("页导航数值按钮的类型")]
315
public PagingButtonType NumericButtonType
316
{
317
get
318
{
319
object obj=ViewState["NumericButtonType"];
320
return (obj==null)?PagingButtonType:(PagingButtonType)obj;
321
}
322
set
323
{
324
ViewState["NumericButtonType"]=value;
325
}
326
}
327
328
/// <summary>
329
/// 获取或设置第一页、上一页、下一页和最后一页按钮的类型,该值仅当PagingButtonType设为Image时才有效。
330
/// </summary>
331
/// <remarks>
332
/// 当您将PagingButtonType设为Image但又不想让第一页、下一页、下一页和最后一页按钮使用图片,则可以将该值设为Text,这会使前面的四个按钮使用文本而不是图片按钮。
333
/// </remarks>
334
[Browsable(true),
335
Category("导航按钮"),
336
DefaultValue(PagingButtonType.Text),
337
Description("第一页、上一页、下一页和最后一页按钮的类型")]
338
public PagingButtonType NavigationButtonType
339
{
340
get
341
{
342
object obj=ViewState["NavigationButtonType"];
343
return (obj==null)?PagingButtonType:(PagingButtonType)obj;
344
}
345
set
346
{
347
ViewState["NavigationButtonType"]=value;
348
}
349
}
350
351
/// <summary>
352
/// 获取或设置“更多页”(
)按钮的类型,该值仅当PagingButtonType设为Image时才有效。
353
/// </summary>
354
/// <remarks>
355
/// 当您将PagingButtonType设为Image但又不想让更多页(
)按钮使用图片时,可以将此值设为Text,这会使更多页按钮使用文本而不是图片按钮。
356
/// </remarks>
357
[Browsable(true),
358
Category("导航按钮"),
359
DefaultValue(PagingButtonType.Text),
360
Description("“更多页”(
)按钮的类型")]
361
public PagingButtonType MoreButtonType
362
{
363
get
364
{
365
object obj=ViewState["MoreButtonType"];
366
return (obj==null)?PagingButtonType:(PagingButtonType)obj;
367
}
368
set
369
{
370
ViewState["MoreButtonType"]=value;
371
}
372
}
373
374
/// <summary>
375
/// 获取或设置分页导航按钮之间的间距。
376
/// </summary>
377
[Browsable(true),
378
Category("导航按钮"),
379
DefaultValue(typeof(Unit),"5px"),
380
Description("分页导航按钮之间的间距")]
381
public Unit PagingButtonSpacing
382
{
383
get
384
{
385
object obj=ViewState["PagingButtonSpacing"];
386
return (obj==null)?Unit.Pixel(5):(Unit.Parse(obj.ToString()));
387
}
388
set
389
{
390
ViewState["PagingButtonSpacing"]=value;
391
}
392
}
393
394
/// <summary>
395
/// 获取或设置一个值,该值指示是否在页导航元素中显示第一页和最后一页按钮。
396
/// </summary>
397
[Browsable(true),
398
Description("是否在页导航元素中显示第一页和最后一页按钮"),
399
Category("导航按钮"),
400
DefaultValue(true)]
401
public bool ShowFirstLast
402
{
403
get
404
{
405
object obj=ViewState["ShowFirstLast"];
406
return (obj==null)?true:(bool)obj;
407
}
408
set{ViewState["ShowFirstLast"]=value;}
409
}
410
411
/// <summary>
412
/// 获取或设置一个值,该值指示是否在页导航元素中显示上一页和下一页按钮。
413
/// </summary>
414
[Browsable(true),
415
Description("是否在页导航元素中显示上一页和下一页按钮"),
416
Category("导航按钮"),
417
DefaultValue(true)]
418
public bool ShowPrevNext
419
{
420
get
421
{
422
object obj=ViewState["ShowPrevNext"];
423
return (obj==null)?true:(bool)obj;
424
}
425
set{ViewState["ShowPrevNext"]=value;}
426
}
427
428
/// <summary>
429
/// 获取或设置一个值,该值指示是否在页导航元素中显示页索引数值按钮。
430
/// </summary>
431
[Browsable(true),
432
Description("是否在页导航元素中显示数值按钮"),
433
Category("导航按钮"),
434
DefaultValue(true)]
435
public bool ShowPageIndex
436
{
437
get
438
{
439
object obj=ViewState["ShowPageIndex"];
440
return (obj==null)?true:(bool)obj;
441
}
442
set{ViewState["ShowPageIndex"]=value;}
443
}
444
445
/// <summary>
446
/// 获取或设置为第一页按钮显示的文本。
447
/// </summary>
448
[Browsable(true),
449
Description("第一页按钮上显示的文本"),
450
Category("导航按钮"),
451
DefaultValue("<font face=\"webdings\">9</font>")]
452
public string FirstPageText
453
{
454
get
455
{
456
object obj=ViewState["FirstPageText"];
457
return (obj==null)?"<font face=\"webdings\">9</font>":(string)obj;
458
}
459
set{ViewState["FirstPageText"]=value;}
460
}
461
462
/// <summary>
463
/// 获取或设置为上一页按钮显示的文本。
464
/// </summary>
465
[Browsable(true),
466
Description("上一页按钮上显示的文本"),
467
Category("导航按钮"),
468
DefaultValue("<font face=\"webdings\">3</font>")]
469
public string PrevPageText
470
{
471
get
472
{
473
object obj=ViewState["PrevPageText"];
474
return (obj==null)?"<font face=\"webdings\">3</font>":(string)obj;
475
}
476
set{ViewState["PrevPageText"]=value;}
477
}
478
479
/// <summary>
480
/// 获取或设置为下一页按钮显示的文本。
481
/// </summary>
482
[Browsable(true),
483
Description("下一页按钮上显示的文本"),
484
Category("导航按钮"),
485
DefaultValue("<font face=\"webdings\">4</font>")]
486
public string NextPageText
487
{
488
get
489
{
490
object obj=ViewState["NextPageText"];
491
return (obj==null)?"<font face=\"webdings\">4</font>":(string)obj;
492
}
493
set{ViewState["NextPageText"]=value;}
494
}
495
496
/// <summary>
497
/// 获取或设置为最后一页按钮显示的文本。
498
/// </summary>
499
[Browsable(true),
500
Description("最后一页按钮上显示的文本"),
501
Category("导航按钮"),
502
DefaultValue("<font face=\"webdings\">:</font>")]
503
public string LastPageText
504
{
505
get
506
{
507
object obj=ViewState["LastPageText"];
508
return (obj==null)?"<font face=\"webdings\">:</font>":(string)obj;
509
}
510
set{ViewState["LastPageText"]=value;}
511
}
512
513
/// <summary>
514
/// 获取或设置在 <see cref="AspNetPager"/> 控件的页导航元素中同时显示的数值按钮的数目。
515
/// </summary>
516
[Browsable(true),
517
Description("要显示的页索引数值按钮的数目"),
518
Category("导航按钮"),
519
DefaultValue(10)]
520
public int NumericButtonCount
521
{
522
get
523
{
524
object obj=ViewState["NumericButtonCount"];
525
return (obj==null)?10:(int)obj;
526
}
527
set{ViewState["NumericButtonCount"]=value;}
528
}
529
530
/// <summary>
531
/// 获取或设置一个值,该值指定是否显示已禁用的按钮。
532
/// </summary>
533
/// <remarks>
534
/// 该值用来指定是否显示已禁用的分页导航按钮,当当前页为第一页时,第一页和上一页按钮将被禁用,当当前页为最后一页时,下一页和最后一页按钮将被禁用,被禁用的按钮没有链接,在按钮上点击也不会有任何作用。
535
/// </remarks>
536
[Browsable(true),
537
Category("导航按钮"),
538
Description("是否显示已禁用的按钮"),
539
DefaultValue(true)]
540
public bool ShowDisabledButtons
541
{
542
get
543
{
544
object obj=ViewState["ShowDisabledButtons"];
545
return (obj==null)?true:(bool)obj;
546
}
547
set
548
{
549
ViewState["ShowDisabledButtons"]=value;
550
}
551
}
552
553
#endregion
554
555
#region Image Buttons
556
557
/// <summary>
558
/// 获取或设置当使用图片按钮时,图片文件的路径。
559
/// </summary>
560
[Browsable(true),
561
Category("图片按钮"),
562
Description("当使用图片按钮时,指定图片文件的路径"),
563
DefaultValue(null)]
564
public string ImagePath
565
{
566
get
567
{
568
string imgPath=(string)ViewState["ImagePath"];
569
if(imgPath!=null)
570
imgPath=this.ResolveUrl(imgPath);
571
return imgPath;
572
}
573
set
574
{
575
string imgPath=value.Trim().Replace("\\","/");
576
ViewState["ImagePath"]=(imgPath.EndsWith("/"))?imgPath:imgPath+"/";
577
}
578
}
579
580
/// <summary>
581
/// 获取或设置当使用图片按钮时,图片的类型,如gif或jpg,该值即图片文件的后缀名。
582
/// </summary>
583
[Browsable(true),
584
Category("图片按钮"),
585
DefaultValue(".gif"),
586
Description("当使用图片按钮时,图片的类型,如gif或jpg,该值即图片文件的后缀名")]
587
public string ButtonImageExtension
588
{
589
get
590
{
591
object obj=ViewState["ButtonImageExtension"];
592
return (obj==null)?".gif":(string)obj;
593
}
594
set
595
{
596
string ext=value.Trim();
597
ViewState["ButtonImageExtension"]=(ext.StartsWith("."))?ext:("."+ext);
598
}
599
}
600
601
/// <summary>
602
/// 获取或设置自定义图片文件名的后缀字符串,以区分不同类型的按钮图片。
603
/// </summary>
604
/// <remarks><note>注意:</note>该值不是文件后缀名,而是为区分不同的图片文件而在图片名中加入的字符串,如:
605
/// 当前有两套按钮图片,其中一套中的“1”的图片名可为“1f.gif”,另一套中的“1”的图片名可起为“1n.gif”,其中的f和n即为ButtonImageNameExtension。</remarks>
606
[Browsable(true),
607
DefaultValue(null),
608
Category("图片按钮"),
609
Description("自定义图片文件名的后缀字符串(非文件后缀名),如图片“1f.gif”的ButtonImageNameExtension即为“f”")]
610
public string ButtonImageNameExtension
611
{
612
get
613
{
614
return (string)ViewState["ButtonImageNameExtension"];
615
}
616
set
617
{
618
ViewState["ButtonImageNameExtension"]=value;
619
}
620
}
621
622
/// <summary>
623
/// 获取或设置当前页索引按钮的图片名后缀。
624
/// </summary>
625
/// <remarks>
626
/// 当 <see cref="PagingButtonType"/> 设为 Image 时,该属性允许您设置当前页索引数值按钮使用的图片名后缀字符,因此可以使当前页索引按钮与其它页索引按钮使用不同的图片,若未设置该值,则默认值为<see cref="ButtonImageNameExtension"/>,即当前页索引按钮与其它页索引按钮使用相同的图片。
627
/// </remarks>
628
[Browsable(true),
629
DefaultValue(null),
630
Category("图片按钮"),
631
Description("当前页索引按钮的图片名后缀字符串")]
632
public string CpiButtonImageNameExtension
633
{
634
get
635
{
636
object obj=ViewState["CpiButtonImageNameExtension"];
637
return (obj==null)?ButtonImageNameExtension:(string)obj;
638
}
639
set
640
{
641
ViewState["CpiButtonImageNameExtension"]=value;
642
}
643
}
644
645
/// <summary>
646
/// 获取或设置已禁用的页导航按钮图片名后缀字符串。
647
/// </summary>
648
/// <remarks>
649
/// 当 <see cref="PagingButtonType"/> 设为 Image 时, 该值允许您设置已禁用(即没有链接,因而点击后无反应)的页导航按钮(包括第一页、上一页、下一页、最后一页四个按钮)的图片文件名后缀字符串,因此可以使已禁用的页导航按钮不同于正常的页导航按钮。若未设置该值,则默认值为<see cref="ButtonImageNameExtension"/>,即已禁用的页导航按钮与正常的页导航按钮使用相同的图片。
650
/// </remarks>
651
[Browsable(true),
652
DefaultValue(null),
653
Category("图片按钮"),
654
Description("已禁用的页导航按钮的图片名后缀字符串")]
655
public string DisabledButtonImageNameExtension
656
{
657
get
658
{
659
object obj=ViewState["DisabledButtonImageNameExtension"];
660
return (obj==null)?ButtonImageNameExtension:(string)obj;
661
}
662
set
663
{
664
ViewState["DisabledButtonImageNameExtension"]=value;
665
}
666
}
667
/// <summary>
668
/// 指定当使用图片按钮时,图片的对齐方式。
669
/// </summary>
670
671
[Browsable(true),
672
Description("指定当使用图片按钮时,图片的对齐方式"),
673
DefaultValue(ImageAlign.Baseline),
674
Category("图片按钮")]
675
public ImageAlign ButtonImageAlign
676
{
677
get
678
{
679
object obj=ViewState["ButtonImageAlign"];
680
return (obj==null)?ImageAlign.Baseline:(ImageAlign)obj;
681
}
682
set{ViewState["ButtonImageAlign"]=value;}
683
}
684
685
686
#endregion
687
688
#region Paging
689
690
/// <summary>
691
/// 获取或设置是否启用url来传递分页信息。
692
/// </summary>
693
/// <remarks>
694
/// 启用Url分页方式是将用户欲访问的页索引通过Url来传递,由于该分页方式不使用页面向自身回发来传递数据,
695
/// 所以每次分页时所有的数据都恢复为初始值或需要重新获取。使用Url分页方式不支持动态改变分页控件的属性值,
696
/// 因暂时无法将新的属性值通过Url来传递给下一页。
697
/// </remarks>
698
/// <example>以下示例说明如何用AspNetPager的Url分页方式对DataGrid进行分页(使用Access数据库):
699
/// <code><![CDATA[
700
///<%@Register TagPrefix="Webdiyer" Namespace="Wuqi.Webdiyer" Assembly="aspnetpager"%>
701
///<%@Import Namespace="System.Data.OleDb"%>
702
///<%@ Import Namespace="System.Data"%>
703
///<%@ Page Language="C#" debug=true%>
704
///<HTML>
705
/// <HEAD>
706
/// <TITLE>Welcome to Webdiyer.com </TITLE>
707
/// <script runat="server">
708
/// OleDbConnection conn;
709
/// OleDbCommand cmd;
710
/// void Page_Load(object src,EventArgs e){
711
/// conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("access/aspnetpager.mdb"));
712
/// if(!Page.IsPostBack){
713
/// cmd=new OleDbCommand("select count(newsid) from wqnews",conn);
714
/// conn.Open();
715
/// pager.RecordCount=(int)cmd.ExecuteScalar();
716
/// conn.Close();
717
/// BindData();
718
/// }
719
/// }
720
///
721
/// void BindData(){
722
/// cmd=new OleDbCommand("select newsid,heading,source,addtime from wqnews order by addtime desc",conn);
723
/// OleDbDataAdapter adapter=new OleDbDataAdapter(cmd);
724
/// DataSet ds=new DataSet();
725
/// adapter.Fill(ds,pager.PageSize*(pager.CurrentPageIndex-1),pager.PageSize,"news");
726
/// dg.DataSource=ds.Tables["news"];
727
/// dg.DataBind();
728
/// }
729
///
730
/// void ChangePage(object src,PageChangedEventArgs e){
731
/// pager.CurrentPageIndex=e.NewPageIndex;
732
/// BindData();
733
/// }
734
///
735
/// </script>
736
/// <meta http-equiv="Content-Language" content="zh-cn">
737
/// <meta http-equiv="content-type" content="text/html;charset=gb2312">
738
/// <META NAME="Generator" CONTENT="EditPlus">
739
/// <META NAME="Author" CONTENT="Webdiyer(yhaili@21cn.com)">
740
/// </HEAD>
741
/// <body>
742
/// <form runat="server" ID="Form1">
743
/// <h2 align="center">AspNetPager分页示例</h2>
744
/// <asp:DataGrid id="dg" runat="server"
745
/// Width="760" CellPadding="4" Align="center" />
746
///
747
/// <Webdiyer:AspNetPager runat="server" id="pager"
748
/// OnPageChanged="ChangePage"
749
/// HorizontalAlign="center"
750
/// style="MARGIN-TOP:10px;FONT-SIZE:16px"
751
/// PageSize="8"
752
/// ShowInputBox="always"
753
/// SubmitButtonStyle="border:1px solid #000066;height:20px;30px"
754
/// InputBoxStyle="border:1px #0000FF solid;text-align:center"
755
/// SubmitButtonText="转到"
756
/// UrlPaging="true"
757
/// UrlPageIndexName="pageindex" />
758
/// </form>
759
/// </body>
760
///</HTML>
761
/// ]]></code>
762
/// </example>
763
[Browsable(true),
764
Category("分页"),
765
DefaultValue(false),
766
Description("是否使用url传递分页信息的方式来分页")]
767
public bool UrlPaging
768
{
769
get
770
{
771
return urlPaging;
772
}
773
set
774
{
775
urlPaging=value;
776
}
777
}
778
779
/// <summary>
780
/// 获取或设置当启用Url分页方式时,在url中表示要传递的页索引的参数的名称。
781
/// </summary>
782
/// <remarks>
783
/// 该属性允许您自定义通过Url传递页索引时表示要传递的页索引的参数的名称,以避免与现有的参数名重复。
784
/// <p>该属性的默认值是“page”,即通过Url分页时,显示在浏览器地址栏中的Url类似于:</p>http://www.webdiyer.com/aspnetpager/samples/datagrid_url.aspx?page=2
785
/// <p>如将该值改为“pageindex”,则上面的Url将变为:</p><p>http://www.webdiyer.com/aspnetpager/samples/datagrid_url.aspx?pageindex=2 </p>
786
/// </remarks>
787
[Browsable(true),
788
DefaultValue("page"),
789
Category("分页"),
790
Description("当启用Url分页方式时,显示在url中表示要传递的页索引的参数的名称")]
791
public string UrlPageIndexName
792
{
793
get{return urlPageIndexName;}
794
set{urlPageIndexName=value;}
795
}
796
797
/// <summary>
798
/// 获取或设置当启用Url分页方式时,在url中表示要传递的页索引的参数的名称。
799
/// </summary>
800
/// <remarks>
801
/// 该属性允许您自定义通过Url传递页索引时表示要传递的页索引的参数的名称,以避免与现有的参数名重复。
802
/// <p>该属性的默认值是“page”,即通过Url分页时,显示在浏览器地址栏中的Url类似于:</p>http://www.webdiyer.com/aspnetpager/samples/datagrid_url.aspx?pagesize=20
803
/// <p>如将该值改为“pagesize1”,则上面的Url将变为:</p><p>http://www.webdiyer.com/aspnetpager/samples/datagrid_url.aspx?pagesize1=20 </p>
804
/// </remarks>
805
[Browsable(true),
806
DefaultValue("pagesize"),
807
Category("分页"),
808
Description("当启用Url分页方式时,显示在url中表示要传递的记录数的参数的名称")]
809
public string UrlPageSize
810
{
811
get{return urlPageSize;}
812
set{urlPageSize=value;}
813
}
814
815
/// <summary>
816
/// 获取或设置当前显示页的索引。
817
/// </summary>
818
///<remarks>使用此属性来确定在 AspNetPager 控件中当前显示的页,当前显示的页的数字索引将以红色字体加粗显示。此属性还用于以编程的方式控制所显示的页。
819
///<p> <b>注意:</b>不同于DataGrid控件的CurrentPageIndex,AspNetPager的CurrentPageIndex属性是从1开始的。</p></remarks>
820
[ReadOnly(true),
821
Browsable(false),
822
Description("当前显示页的索引"),
823
Category("分页"),
824
DefaultValue(1),
825
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
826
public int CurrentPageIndex
827
{
828
get
829
{
830
object cpage=ViewState["CurrentPageIndex"];
831
int pindex=(cpage==null)?1:(int)cpage;
832
if(pindex>PageCount&&PageCount>0)
833
return PageCount;
834
else if(pindex<1)
835
return 1;
836
return pindex;
837
}
838
set
839
{
840
int cpage=value;
841
if(cpage<1)
842
cpage=1;
843
else if(cpage>this.PageCount)
844
cpage=this.PageCount;
845
ViewState["CurrentPageIndex"]=cpage;
846
}
847
}
848
849
/// <summary>
850
/// 获取或设置需要分页的所有记录的总数。
851
/// </summary>
852
/// <remarks>
853
/// 当页面第一次加载时,应以编程方式将从存储过程或Sql语句中返回的数据表中所有要分页的记录的总数赋予该属性,AspNetPager会将其保存的ViewState中并在页面回发时从ViewState中获取该值,因此避免了每次分页都要访问数据库而影响分页性能。AspNetPager根据要分页的所有数据的总项数和 <see cref="PageSize"/> 属性来计算显示所有数据需要的总页数,即 <see cref="PageCount"/>的值。
854
/// </remarks>
855
/// <example>
856
/// 下面的示例显示如何以编程方式将从Sql语句返回的记录总数赋给该属性:
857
/// <p>
858
/// <code><![CDATA[
859
/// <HTML>
860
/// <HEAD>
861
/// <TITLE>Welcome to Webdiyer.com </TITLE>
862
/// <script runat="server">
863
/// SqlConnection conn;
864
/// SqlCommand cmd;
865
/// void Page_Load(object src,EventArgs e)
866
/// {
867
/// conn=new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
868
/// if(!Page.IsPostBack)
869
/// {
870
/// cmd=new SqlCommand("select count(id) from news",conn);
871
/// conn.Open();
872
/// pager.RecordCount=(int)cmd.ExecuteScalar();
873
/// conn.Close();
874
/// BindData();
875
/// }
876
/// }
877
///
878
/// void BindData()
879
/// {
880
/// cmd=new SqlCommand("GetPagedNews",conn);
881
/// cmd.CommandType=CommandType.StoredProcedure;
882
/// cmd.Parameters.Add("@pageindex",pager.CurrentPageIndex);
883
/// cmd.Parameters.Add("@pagesize",pager.PageSize);
884
/// conn.Open();
885
/// dataGrid1.DataSource=cmd.ExecuteReader();
886
/// dataGrid1.DataBind();
887
/// conn.Close();
888
/// }
889
/// void ChangePage(object src,PageChangedEventArgs e)
890
/// {
891
/// pager.CurrentPageIndex=e.NewPageIndex;
892
/// BindData();
893
/// }
894
/// </script>
895
/// <meta http-equiv="Content-Language" content="zh-cn">
896
/// <meta http-equiv="content-type" content="text/html;charset=gb2312">
897
/// <META NAME="Generator" CONTENT="EditPlus">
898
/// <META NAME="Author" CONTENT="Webdiyer(yhaili@21cn.com)">
899
/// </HEAD>
900
/// <body>
901
/// <form runat="server" ID="Form1">
902
/// <asp:DataGrid id="dataGrid1" runat="server" />
903
///
904
/// <Webdiyer:AspNetPager id="pager" runat="server"
905
/// PageSize="8"
906
/// NumericButtonCount="8"
907
/// ShowCustomInfoSection="before"
908
/// ShowInputBox="always"
909
/// CssClass="mypager"
910
/// HorizontalAlign="center"
911
/// OnPageChanged="ChangePage" />
912
///
913
/// </form>
914
/// </body>
915
///</HTML>
916
/// ]]>
917
/// </code></p>
918
/// <p>本示例使用的存储过程代码如下:</p>
919
/// <code><![CDATA[
920
///CREATE procedure GetPagedNews
921
/// (@pagesize int,
922
/// @pageindex int)
923
/// as
924
/// set nocount on
925
/// declare @indextable table(id int identity(1,1),nid int)
926
/// declare @PageLowerBound int
927
/// declare @PageUpperBound int
928
/// set @PageLowerBound=(@pageindex-1)*@pagesize
929
/// set @PageUpperBound=@PageLowerBound+@pagesize
930
/// set rowcount @PageUpperBound
931
/// insert into @indextable(nid) select id from news order by addtime desc
932
/// select O.id,O.title,O.source,O.addtime from news O,@indextable t where O.id=t.nid
933
/// and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id
934
/// set nocount off
935
///GO
936
/// ]]>
937
/// </code>
938
/// </example>
939
[Browsable(false),
940
Description("要分页的所有记录的总数,该值须在程序运行时设置,默认值为225是为设计时支持而设置的参照值。"),
941
Category("Data"),
942
DefaultValue(225)]
943
public int RecordCount
944
{
945
get
946
{
947
object obj=ViewState["Recordcount"];
948
return (obj==null)?0:(int)obj;
949
}
950
set{ViewState["Recordcount"]=value;}
951
}
952
953
/// <summary>
954
/// 获取当前页之后未显示的页的总数。
955
/// </summary>
956
[Browsable(false),
957
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
958
public int PagesRemain
959
{
960
get
961
{
962
return PageCount-CurrentPageIndex;
963
}
964
}
965
966
/// <summary>
967
/// 获取或设置每页显示的项数。
968
/// </summary>
969
/// <remarks>
970
/// 该值获取或设置数据呈现控件每次要显示数据表中的的数据的项数,AspNetPager根据该值和 <see cref="RecordCount"/> 来计算显示所有数据需要的总页数,即 <see cref="PageCount"/>的值。</remarks>
971
/// <example>以下示例将 <see cref="AspNetPager"/> 设置为允许每页显示8条数据:
972
/// <code>
973
/// <
975
/// <Webdiyer:AspNetPager id="pager" runat="server" PageSize=8 OnPageChanged="ChangePage"/>
976
/// 
977
/// ]]></code></example>
978
[Browsable(true),
979
Description("每页显示的记录数"),
980
Category("分页"),
981
DefaultValue(10)]
982
public int PageSize
983
{
984
get
985
{
986
object obj=ViewState["PageSize"];
987
return (obj==null)?10:(int)obj;
988
}
989
set
990
{
991
ViewState["PageSize"]=value;
992
}
993
}
994
995
/// <summary>
996
/// 获取在当前页之后还未显示的剩余记录的项数。
997
/// </summary>
998
[Browsable(false),
999
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
1000
public int RecordsRemain
1001
{
1002
get
1003
{
1004
if(CurrentPageIndex<PageCount)
1005
return RecordCount-(CurrentPageIndex*PageSize);
1006
return 0;}
1007
}
1008
1009
1010
/// <summary>
1011
/// 获取所有要分页的记录需要的总页数。
1012
/// </summary>
1013
[Browsable(false),
1014
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
1015
public int PageCount
1016
{
1017
get{return (int)Math.Ceiling((double)RecordCount/(double)PageSize);}
1018
}
1019
1020
1021
#endregion
1022
1023
#region TextBox and Submit Button
1024
1025
/// <summary>
1026
/// 获取或设置页索引文本框的显示方式。
1027
/// </summary>
1028
/// <remarks>
1029
/// 页索引文件框允许用户手式输入要访问的页的索引,当页数非常多时,显示页索引文本框非常方便用户跳转到指定的页,默认情况下,该文本框只有在总页数大于或等于 <see cref="ShowBoxThreshold"/> 的值时才显示,否则不显示,要想该文本框任何时候都显示,请将其值设为Always,若希望任何时候都不显示,则应设为Never。
1030
///</remarks>
1031
[Browsable(true),
1032
Description("指定页索引文本框的显示方式"),
1033
Category("文本框及提交按钮"),
1034
DefaultValue(ShowInputBox.Auto)]
1035
public ShowInputBox ShowInputBox
1036
{
1037
get
1038
{
1039
object obj=ViewState["ShowInputBox"];
1040
return (obj==null)?ShowInputBox.Auto:(ShowInputBox)obj;
1041
}
1042
set{ViewState["ShowInputBox"]=value;}
1043
}
1044
1045
/// <summary>
1046
/// 获取或设置应用于页索引输入文本框的CSS类名。
1047
/// </summary>
1048
[Browsable(true),
1049
Category("文本框及提交按钮"),
1050
DefaultValue(null),
1051
Description("应用于页索引输入文本框的CSS类名")]
1052
public string InputBoxClass
1053
{
1054
get
1055
{
1056
return (string)ViewState["InputBoxClass"];
1057
}
1058
set
1059
{
1060
if(value.Trim().Length>0)
1061
ViewState["InputBoxClass"]=value;
1062
}
1063
}
1064
1065
/// <summary>
1066
/// 获取或设置页索引输入文本框的CSS样式文本。
1067
/// </summary>
1068
1069
[Browsable(true),
1070
Category("文本框及提交按钮"),
1071
DefaultValue(null),
1072
Description("应用于页索引输入文本框的CSS样式文本")]
1073
public string InputBoxStyle
1074
{
1075
get
1076
{
1077
return (string)ViewState["InputBoxStyle"];
1078
}
1079
set
1080
{
1081
if(value.Trim().Length>0)
1082
ViewState["InputBoxStyle"]=value;
1083
}
1084
}
1085
1086
/// <summary>
1087
/// 获取或设置页索引页索引输入文本框前的文本字符串值。
1088
/// </summary>
1089
[Browsable(true),
1090
Category("文本框及提交按钮"),
1091
DefaultValue(null),
1092
Description("页索引输入文本框前的文本内容字符串")]
1093
public string TextBeforeInputBox
1094
{
1095
get
1096
{
1097
return (string)ViewState["TextBeforeInputBox"];
1098
}
1099
set
1100
{
1101
ViewState["TextBeforeInputBox"]=value;
1102
}
1103
}
1104
1105
/// <summary>
1106
/// 获取或设置页索引文本输入框后的文本内容字符串值。
1107
/// </summary>
1108
[Browsable(true),
1109
DefaultValue(null),
1110
Category("文本框及提交按钮"),
1111
Description("页索引输入文本框后的文本内容字符串")]
1112
public string TextAfterInputBox
1113
{
1114
get
1115
{
1116
return (string)ViewState["TextAfterInputBox"];
1117
}
1118
set
1119
{
1120
ViewState["TextAfterInputBox"]=value;
1121
}
1122
}
1123
1124
1125
/// <summary>
1126
/// 获取或设置提交按钮上的文本。
1127
/// </summary>
1128
[Browsable(true),
1129
Category("文本框及提交按钮"),
1130
DefaultValue("go"),
1131
Description("提交按钮上的文本")]
1132
public string SubmitButtonText
1133
{
1134
get
1135
{
1136
object obj=ViewState["SubmitButtonText"];
1137
return (obj==null)?"go":(string)obj;
1138
}
1139
set
1140
{
1141
if(value.Trim().Length>0)
1142
ViewState["SubmitButtonText"]=value;
1143
}
1144
}
1145
/// <summary>
1146
/// 获取或设置应用于提交按钮的CSS类名。
1147
/// </summary>
1148
[Browsable(true),
1149
Category("文本框及提交按钮"),
1150
DefaultValue(null),
1151
Description("应用于提交按钮的CSS类名")]
1152
public string SubmitButtonClass
1153
{
1154
get
1155
{
1156
return (string)ViewState["SubmitButtonClass"];
1157
}
1158
set
1159
{
1160
ViewState["SubmitButtonClass"]=value;
1161
}
1162
}
1163
1164
/// <summary>
1165
/// 获取或设置应用于提交按钮的CSS样式。
1166
/// </summary>
1167
[Browsable(true),
1168
Category("文本框及提交按钮"),
1169
DefaultValue(null),
1170
Description("应用于提交按钮的CSS样式")]
1171
public string SubmitButtonStyle
1172
{
1173
get
1174
{
1175
return (string)ViewState["SubmitButtonStyle"];
1176
}
1177
set
1178
{
1179
ViewState["SubmitButtonStyle"]=value;
1180
}
1181
}
1182
/// <summary>
1183
/// 获取或设置自动显示页索引输入文本框的最低起始页数。
1184
/// </summary>
1185
/// <remarks>
1186
/// 当 <see cref="ShowInputBox"/> 设为Auto(默认)并且要分页的数据的总页数达到该值时会自动显示页索引输入文本框,默认值为30。该选项当 <see cref="ShowInputBox"/> 设为Never或Always时没有任何作用。
1187
/// </remarks>
1188
[Browsable(true),
1189
Description("指定当ShowInputBox设为ShowInputBox.Auto时,当总页数达到多少时才显示页索引输入文本框"),
1190
Category("文本框及提交按钮"),
1191
DefaultValue(30)]
1192
public int ShowBoxThreshold
1193
{
1194
get
1195
{
1196
object obj=ViewState["ShowBoxThreshold"];
1197
return (obj==null)?30:(int)obj;
1198
}
1199
set{ViewState["ShowBoxThreshold"]=value;}
1200
}
1201
1202
1203
#endregion
1204
1205
#region SelectBox and Submit Button
1206
1207
/// <summary>
1208
/// 获取或设置页索引文本框的显示方式。
1209
/// </summary>
1210
/// <remarks>
1211
/// 页索引文件框允许用户手式输入要访问的页的索引,当页数非常多时,显示页索引文本框非常方便用户跳转到指定的页,默认情况下,该文本框只有在总页数大于或等于 <see cref="ShowBoxThreshold"/> 的值时才显示,否则不显示,要想该文本框任何时候都显示,请将其值设为Always,若希望任何时候都不显示,则应设为Never。
1212
///</remarks>
1213
[Browsable(true),
1214
Description("指定页索引文本框的显示方式"),
1215
Category("分页记录数选择"),
1216
DefaultValue(ShowInputBox.Auto)]
1217
public ShowInputBox ShowSelectBox
1218
{
1219
get
1220
{
1221
object obj=ViewState["ShowSelectBox"];
1222
return (obj==null)?ShowInputBox.Auto:(ShowInputBox)obj;
1223
}
1224
set{ViewState["ShowSelectBox"]=value;}
1225
}
1226
1227
/// <summary>
1228
/// 获取或设置应用于页索引输入文本框的CSS类名。
1229
/// </summary>
1230
[Browsable(true),
1231
Category("分页记录数选择"),
1232
DefaultValue(null),
1233
Description("应用于页索引输入文本框的CSS类名")]
1234
public string SelectBoxClass
1235
{
1236
get
1237
{
1238
return (string)ViewState["SelectBoxClass"];
1239
}
1240
set
1241
{
1242
if(value.Trim().Length>0)
1243
ViewState["SelectBoxClass"]=value;
1244
}
1245
}
1246
1247
/// <summary>
1248
/// 获取或设置页索引输入文本框的CSS样式文本。
1249
/// </summary>
1250
1251
[Browsable(true),
1252
Category("分页记录数选择"),
1253
DefaultValue(null),
1254
Description("应用于页索引输入文本框的CSS样式文本")]
1255
public string SelectBoxStyle
1256
{
1257
get
1258
{
1259
return (string)ViewState["SelectBoxStyle"];
1260
}
1261
set
1262
{
1263
if(value.Trim().Length>0)
1264
ViewState["SelectBoxStyle"]=value;
1265
}
1266
}
1267
1268
/// <summary>
1269
/// 获取或设置页索引页索引输入文本框前的文本字符串值。
1270
/// </summary>
1271
[Browsable(true),
1272
Category("分页记录数选择"),
1273
DefaultValue("每页"),
1274
Description("页索引输入文本框前的文本内容字符串")]
1275
public string TextBeforeSelectBox
1276
{
1277
get
1278
{
1279
return (string)ViewState["TextBeforeSelectBox"];
1280
}
1281
set
1282
{
1283
ViewState["TextBeforeSelectBox"]=value;
1284
}
1285
}
1286
1287
/// <summary>
1288
/// 获取或设置页索引文本输入框后的文本内容字符串值。
1289
/// </summary>
1290
[Browsable(true),
1291
DefaultValue("条"),
1292
Category("分页记录数选择"),
1293
Description("页索引输入文本框后的文本内容字符串")]
1294
public string TextAfterSelectBox
1295
{
1296
get
1297
{
1298
return (string)ViewState["TextAfterSelectBox"];
1299
}
1300
set
1301
{
1302
ViewState["TextAfterSelectBox"]=value;
1303
}
1304
}
1305
1306
1307
/// <summary>
1308
/// 获取或设置提交按钮上的文本。
1309
/// </summary>
1310
[Browsable(true),
1311
Category("分页记录数选择"),
1312
DefaultValue("设置"),
1313
Description("提交按钮上的文本")]
1314
public string SubmitButtonSelectText
1315
{
1316
get
1317
{
1318
object obj=ViewState["SubmitButtonSelectText"];
1319
return (obj==null)?"设置":(string)obj;
1320
}
1321
set
1322
{
1323
if(value.Trim().Length>0)
1324
ViewState["SubmitButtonSelectText"]=value;
1325
}
1326
}
1327
/// <summary>
1328
/// 获取或设置自动显示页索引输入文本框的最低起始页数。
1329
/// </summary>
1330
/// <remarks>
1331
/// 当 <see cref="ShowInputBox"/> 设为Auto(默认)并且要分页的数据的总页数达到该值时会自动显示页索引输入文本框,默认值为30。该选项当 <see cref="ShowInputBox"/> 设为Never或Always时没有任何作用。
1332
/// </remarks>
1333
[Browsable(true),
1334
Description("指定当ShowInputBox设为ShowInputBox.Auto时,当总页数达到多少时才显示页索引输入文本框"),
1335
Category("分页记录数选择"),
1336
DefaultValue(30)]
1337
public int ShowSelectBoxThreshold
1338
{
1339
get
1340
{
1341
object obj=ViewState["ShowSelectBoxThreshold"];
1342
return (obj==null)?30:(int)obj;
1343
}
1344
set{ViewState["ShowSelectBoxThreshold"]=value;}
1345
}
1346
1347
1348
#endregion
1349
1350
#region CustomInfoSection
1351
1352
/// <summary>
1353
/// 获取或设置显示用户自定义信息区的方式。
1354
/// </summary>
1355
/// <remarks>
1356
/// 该属性值设为Left或Right时会在分页导航元素左边或右边划出一个专门的区域来显示有关用户自定义信息,设为Never时不显示。
1357
/// </remarks>
1358
[Browsable(true),
1359
Description("显示当前页和总页数信息,默认值为不显示,值为ShowCustomInfoSection.Left时将显示在页索引前,为ShowCustomInfoSection.Right时将显示在页索引后"),
1360
DefaultValue(ShowCustomInfoSection.Never),
1361
Category("自定义信息区")]
1362
public ShowCustomInfoSection ShowCustomInfoSection
1363
{
1364
get
1365
{
1366
object obj=ViewState["ShowCustomInfoSection"];
1367
return (obj==null)?ShowCustomInfoSection.Never:(ShowCustomInfoSection)obj;
1368
}
1369
set{ViewState["ShowCustomInfoSection"]=value;}
1370
}
1371
1372
/// <summary>
1373
/// 获取或设置用户自定义信息区文本的对齐方式。
1374
/// </summary>
1375
[Browsable(true),
1376
Category("自定义信息区"),
1377
DefaultValue(HorizontalAlign.Left),
1378
Description("用户自定义信息区文本的对齐方式")]
1379
public HorizontalAlign CustomInfoTextAlign
1380
{
1381
get
1382
{
1383
object obj=ViewState["CustomInfoTextAlign"];
1384
return (obj==null)?HorizontalAlign.Left:(HorizontalAlign)obj;
1385
}
1386
set
1387
{
1388
ViewState["CustomInfoTextAlign"]=value;
1389
}
1390
}
1391
1392
/// <summary>
1393
/// 获取或设置用户自定义信息区的宽度。
1394
/// </summary>
1395
[Browsable(true),
1396
Category("自定义信息区"),
1397
DefaultValue(typeof(Unit),"40%"),
1398
Description("用户自定义信息区的宽度")]
1399
public Unit CustomInfoSectionWidth
1400
{
1401
get
1402
{
1403
object obj=ViewState["CustomInfoSectionWidth"];
1404
return (obj==null)?Unit.Percentage(40):(Unit)obj;
1405
}
1406
set
1407
{
1408
ViewState["CustomInfoSectionWidth"]=value;
1409
}
1410
}
1411
1523
[Browsable(false),
2601
2608
/// 使用文字按钮。

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

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237


238



239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261


262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352


353

354

355


356

357

358

359

360


361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

408

409

410

411

412

413

414

415

416

417

418

419

420

421

422

423

424

425

426

427

428

429

430

431

432

433

434

435

436

437

438

439

440

441

442

443

444

445

446

447

448

449

450

451

452

453

454

455

456

457

458

459

460

461

462

463

464

465

466

467

468

469

470

471

472

473

474

475

476

477

478

479

480

481

482

483

484

485

486

487

488

489

490

491

492

493

494

495

496

497

498

499

500

501

502

503

504

505

506

507

508

509

510

511

512

513

514

515

516

517

518

519

520

521

522

523

524

525

526

527

528

529

530

531

532

533

534

535

536

537

538

539

540

541

542

543

544

545

546

547

548

549

550

551

552

553

554

555

556

557

558

559

560

561

562

563

564

565

566

567

568

569

570

571

572

573

574

575

576

577

578

579

580

581

582

583

584

585

586

587

588

589

590

591

592

593

594

595

596

597

598

599

600

601

602

603

604

605

606

607

608

609

610

611

612

613

614

615

616

617

618

619

620

621

622

623

624

625

626

627

628

629

630

631

632

633

634

635

636

637

638

639

640

641

642

643

644

645

646

647

648

649

650

651

652

653

654

655

656

657

658

659

660

661

662

663

664

665

666

667

668

669

670

671

672

673

674

675

676

677

678

679

680

681

682

683

684

685

686

687

688

689

690

691

692

693

694

695

696

697

698

699

700

701

702

703

704

705

706

707

708

709

710

711

712

713

714

715

716

717

718

719

720

721

722

723

724

725

726

727

728

729

730

731

732

733

734

735

736

737

738

739

740

741

742

743

744

745

746

747

748

749

750

751

752

753

754

755

756

757

758

759

760

761

762

763

764

765

766

767

768

769

770

771

772

773

774

775

776

777

778

779

780

781

782

783

784

785

786

787

788

789

790

791

792

793

794

795

796

797

798

799

800

801

802

803

804

805

806

807

808

809

810

811

812

813

814

815

816

817

818

819

820

821

822

823

824

825

826

827

828

829

830

831

832

833

834

835

836

837

838

839

840

841

842

843

844

845

846

847

848

849

850

851

852

853

854

855

856

857

858

859

860

861

862

863

864

865

866

867

868

869

870

871

872

873

874

875

876

877

878

879

880

881

882

883

884

885

886

887

888

889

890

891

892

893

894

895

896

897

898

899

900

901

902

903

904

905

906

907

908

909

910

911

912

913

914

915

916

917

918

919

920

921

922

923

924

925

926

927

928

929

930

931

932

933

934

935

936

937

938

939

940

941

942

943

944

945

946

947

948

949

950

951

952

953

954

955

956

957

958

959

960

961

962

963

964

965

966

967

968

969

970

971

972

973

974


975

976


977

978

979

980

981

982

983

984

985

986

987

988

989

990

991

992

993

994

995

996

997

998

999

1000

1001

1002

1003

1004

1005

1006

1007

1008

1009

1010

1011

1012

1013

1014

1015

1016

1017

1018

1019

1020

1021

1022

1023

1024

1025

1026

1027

1028

1029

1030

1031

1032

1033

1034

1035

1036

1037

1038

1039

1040

1041

1042

1043

1044

1045

1046

1047

1048

1049

1050

1051

1052

1053

1054

1055

1056

1057

1058

1059

1060

1061

1062

1063

1064

1065

1066

1067

1068

1069

1070

1071

1072

1073

1074

1075

1076

1077

1078

1079

1080

1081

1082

1083

1084

1085

1086

1087

1088

1089

1090

1091

1092

1093

1094

1095

1096

1097

1098

1099

1100

1101

1102

1103

1104

1105

1106

1107

1108

1109

1110

1111

1112

1113

1114

1115

1116

1117

1118

1119

1120

1121

1122

1123

1124

1125

1126

1127

1128

1129

1130

1131

1132

1133

1134

1135

1136

1137

1138

1139

1140

1141

1142

1143

1144

1145

1146

1147

1148

1149

1150

1151

1152

1153

1154

1155

1156

1157

1158

1159

1160

1161

1162

1163

1164

1165

1166

1167

1168

1169

1170

1171

1172

1173

1174

1175

1176

1177

1178

1179

1180

1181

1182

1183

1184

1185

1186

1187

1188

1189

1190

1191

1192

1193

1194

1195

1196

1197

1198

1199

1200

1201

1202

1203

1204

1205

1206

1207

1208

1209

1210

1211

1212

1213

1214

1215

1216

1217

1218

1219

1220

1221

1222

1223

1224

1225

1226

1227

1228

1229

1230

1231

1232

1233

1234

1235

1236

1237

1238

1239

1240

1241

1242

1243

1244

1245

1246

1247

1248

1249

1250

1251

1252

1253

1254

1255

1256

1257

1258

1259

1260

1261

1262

1263

1264

1265

1266

1267

1268

1269

1270

1271

1272

1273

1274

1275

1276

1277

1278

1279

1280

1281

1282

1283

1284

1285

1286

1287

1288

1289

1290

1291

1292

1293

1294

1295

1296

1297

1298

1299

1300

1301

1302

1303

1304

1305

1306

1307

1308

1309

1310

1311

1312

1313

1314

1315

1316

1317

1318

1319

1320

1321

1322

1323

1324

1325

1326

1327

1328

1329

1330

1331

1332

1333

1334

1335

1336

1337

1338

1339

1340

1341

1342

1343

1344

1345

1346

1347

1348

1349

1350

1351

1352

1353

1354

1355

1356

1357

1358

1359

1360

1361

1362

1363

1364

1365

1366

1367

1368

1369

1370

1371

1372

1373

1374

1375

1376

1377

1378

1379

1380

1381

1382

1383

1384

1385

1386

1387

1388

1389

1390

1391

1392

1393

1394

1395

1396

1397

1398

1399

1400

1401

1402

1403

1404

1405

1406

1407

1408

1409

1410

1411

1523

2601

2608
