温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:MyWebPages51aspx汉化最终版
当前文件:
MyWebPagesStarterKit/App_Code/Controls/Pager.cs,打开代码结构图
MyWebPagesStarterKit/App_Code/Controls/Pager.cs,打开代码结构图1//=============================================================================================== 2
// 3
// (c) Copyright Microsoft Corporation. 4
// This source is subject to the Microsoft Permissive License. 5
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx. 6
// All other rights reserved. 7
// 8
//=============================================================================================== 9
10
using System; 11
using System.Data; 12
using System.Configuration; 13
using System.Web; 14
using System.Web.Security; 15
using System.Web.UI; 16
using System.Web.UI.WebControls; 17
using System.Web.UI.WebControls.WebParts; 18
using System.Web.UI.HtmlControls; 19
using System.Reflection; 20
using System.Web.UI.Design; 21
using System.ComponentModel; 22
using System.Collections; 23
using System.Collections.Generic; 24
using System.Drawing; 25
26
namespace MyWebPagesStarterKit.Controls 27
{ 28
[ToolboxData("<{0}:Pager runat=server></{0}:Pager>")] 29
public class Pager : WebControl, INamingContainer 30
{ 31
private ITemplate _separatorTemplate; 32
private Control _controlToPage; 33
private string _controlToPageName; 34
private PagedDataSource _pagedDataSource; 35
private int _pageSize; 36
private string _firstImageUrl; 37
private string _previousImageUrl; 38
private string _nextImageUrl; 39
private string _lastImageUrl; 40
private PagerMode _mode; 41
private bool _showPageNumbers; 42
private Table _table; 43
44
public Pager() 45
{ 46
_pageSize = 20; 47
_firstImageUrl = string.Empty; 48
_previousImageUrl = string.Empty; 49
_nextImageUrl = string.Empty; 50
_lastImageUrl = string.Empty; 51
_mode = PagerMode.FirstPreviousNextLast; 52
_showPageNumbers = true; 53
_table = new Table(); 54
} 55
56
[Browsable(false), PersistenceMode(PersistenceMode.InnerProperty)] 57
public ITemplate SeparatorTemplate 58
{ 59
get { return _separatorTemplate; } 60
set { _separatorTemplate = value; } 61
} 62
63
public string ControlToPage 64
{ 65
get { return _controlToPageName; } 66
set { _controlToPageName = value; } 67
} 68
69
public int PageSize 70
{ 71
get { return _pageSize; } 72
set { _pageSize = value; } 73
} 74
75
public bool ShowPageNumbers 76
{ 77
get { return _showPageNumbers; } 78
set { _showPageNumbers = value; } 79
} 80
81
public override Unit BorderWidth 82
{ 83
get { return _table.BorderWidth; } 84
set { _table.BorderWidth = value; } 85
} 86
87
public override Color BorderColor 88
{ 89
get { return _table.BorderColor; } 90
set { _table.BorderColor = value; } 91
} 92
93
public override BorderStyle BorderStyle 94
{ 95
get { return _table.BorderStyle; } 96
set { _table.BorderStyle = value; } 97
} 98
99
public override Color BackColor 100
{ 101
get { return _table.BackColor; } 102
set { _table.BackColor = value; } 103
} 104
105
public override string CssClass 106
{ 107
get { return _table.CssClass; } 108
set { _table.CssClass = value; } 109
} 110
111
[UrlProperty] 112
public string FirstImageUrl 113
{ 114
get { return _firstImageUrl; } 115
set { _firstImageUrl = ResolveUrl(value); } 116
} 117
118
[UrlProperty] 119
public string PreviousImageUrl 120
{ 121
get { return _previousImageUrl; } 122
set { _previousImageUrl = ResolveUrl(value); } 123
} 124
125
[UrlProperty] 126
public string NextImageUrl 127
{ 128
get { return _nextImageUrl; } 129
set { _nextImageUrl = ResolveUrl(value); } 130
} 131
132
[UrlProperty] 133
public string LastImageUrl 134
{ 135
get { return _lastImageUrl; } 136
set { _lastImageUrl = ResolveUrl(value); } 137
} 138
139
public PagerMode Mode 140
{ 141
get { return _mode; } 142
set { _mode = value; } 143
} 144
145
private int CurrentPageIndex 146
{ 147
get { return (ViewState["CurrentPageIndex"] == null) ? 0 : (int)ViewState["CurrentPageIndex"]; } 148
set { ViewState["CurrentPageIndex"] = value; } 149
} 150
151
private int TotalPages 152
{ 153
get { return (ViewState["TotalPages"] == null) ? 0 : (int)ViewState["TotalPages"]; } 154
set { ViewState["TotalPages"] = value; } 155
} 156
157
protected override void OnLoad(EventArgs e) 158
{ 159
base.OnLoad(e); 160
161
_controlToPage = Parent.FindControl(_controlToPageName); 162
if (_controlToPage == null) 163
throw new Exception(string.Format("'{0}' is not a valid value for ControlToPage (The control does not exist).", _controlToPageName)); 164
165
if ( 166
! ( 167
(_controlToPage.GetType().IsSubclassOf(typeof(BaseDataBoundControl))) 168
|| 169
(_controlToPage.GetType().IsSubclassOf(typeof(BaseDataList))) 170
) 171
) 172
throw new Exception("Works only for Controls deriving from BaseDataBoundControl or BaseDataList."); 173
174
if (_controlToPage is BaseDataBoundControl) 175
((BaseDataBoundControl)_controlToPage).DataBinding += new EventHandler(ControlToPage_DataBinding); 176
else if (_controlToPage is BaseDataList) 177
((BaseDataList)_controlToPage).DataBinding += new EventHandler(ControlToPage_DataBinding); 178
} 179
180
private void ControlToPage_DataBinding(object sender, EventArgs e) 181
{ 182
ChildControlsCreated = false; 183
184
object o = null; 185
186
if (_controlToPage is BaseDataBoundControl) 187
o = ((BaseDataBoundControl)_controlToPage).DataSource; 188
else if (_controlToPage is BaseDataList) 189
o = ((BaseDataList)_controlToPage).DataSource; 190
191
IEnumerable enumerable; 192
193
if (o.GetType().Name == typeof(DataTable).Name) 194
enumerable = ((DataTable)o).DefaultView; 195
else 196
enumerable = (IEnumerable)o; 197
198
_pagedDataSource = new PagedDataSource(); 199
_pagedDataSource.AllowPaging = true; 200
_pagedDataSource.DataSource = enumerable; 201
_pagedDataSource.PageSize = PageSize; 202
_pagedDataSource.CurrentPageIndex = CurrentPageIndex; 203
204
if (_controlToPage is BaseDataBoundControl) 205
((BaseDataBoundControl)_controlToPage).DataSource = _pagedDataSource; 206
else if (_controlToPage is BaseDataList) 207
((BaseDataList)_controlToPage).DataSource = _pagedDataSource; 208
209
TotalPages = _pagedDataSource.PageCount; 210
211
Visible = (TotalPages > 1); 212
} 213
214
protected override void CreateChildControls() 215
{ 216
_table.Rows.Clear(); 217
Controls.Clear(); 218
ClearChildViewState(); 219
220
//for Valid XHTML 1.0 Transitional the table-tag cannot be placed directly within span-tag 221
//span-tag is created automatically by the .net control 222
HtmlGenericControl obj = new HtmlGenericControl("object"); 223
Controls.Add(obj); 224
225
//Controls.Add(_table); 226
obj.Controls.Add(_table); 227
_table.EnableViewState = false; 228
_table.Width = Unit.Percentage(100); 229
_table.Rows.Add(new TableRow()); 230
231
TableCell cell = null; 232
233
cell = new TableCell(); 234
_table.Rows[0].Cells.Add(cell); 235
cell.Width = Unit.Percentage(20); 236
cell.HorizontalAlign = HorizontalAlign.Left; 237
238
// first button 239
if ((CurrentPageIndex > 0) && ((Mode == PagerMode.FirstLast) || (Mode == PagerMode.FirstPreviousNextLast))) 240
{ 241
LinkButton btn = new LinkButton(); 242
cell.Controls.Add(btn); 243
if (FirstImageUrl != string.Empty) 244
btn.Text = string.Format("<img src=\"{0}\" border=\"0\" alt=\"\" />", FirstImageUrl); 245
else 246
btn.Text = "|<<"; 247
btn.CommandArgument = "0"; 248
btn.CommandName = "Page"; 249
btn.Command += new CommandEventHandler(btn_Command); 250
btn.CausesValidation = false; 251
} 252
253
// previous button 254
if ((CurrentPageIndex > 0) && ((Mode == PagerMode.PreviousNext) || (Mode == PagerMode.FirstPreviousNextLast))) 255
{ 256
if (cell.Controls.Count > 0) 257
{ 258
Literal lit = new Literal(); 259
lit.Text = " "; 260
cell.Controls.Add(




[ToolboxData(
}