您目前尚未登陆,请选择【登陆】或【注册
首页->全站代码->MyWebPages51aspx汉化最终版>>App-Code/Controls/Pager.cs>>源码在线查看
温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:MyWebPages51aspx汉化最终版
当前文件:文件类型 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 10using System; 11using System.Data; 12using System.Configuration; 13using System.Web; 14using System.Web.Security; 15using System.Web.UI; 16using System.Web.UI.WebControls; 17using System.Web.UI.WebControls.WebParts; 18using System.Web.UI.HtmlControls; 19using System.Reflection; 20using System.Web.UI.Design; 21using System.ComponentModel; 22using System.Collections; 23using System.Collections.Generic; 24using System.Drawing; 25 26namespace 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 = "|&lt;&lt;"; 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 = "&nbsp;"; 260 cell.Controls.Add(