1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Fenye.aspx.cs" Inherits="WebApplication1.Fenye" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xhtml"> 6 <head runat="server"> 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 <title></title> 9 <style type="text/css"> 10 .pager_manu .pageinfo { 11 float: right; 12 } 13 14 .pager_manu A { 15 float: left; 16 /*BORDER: #8db5d7 1px solid; */ 17 PADDING-BOTTOM: 5px; 18 MARGIN-left: 2px; 19 MARGIN-right: 2px; 20 PADDING-LEFT: 1px; 21 PADDING-RIGHT: 1px; 22 COLOR: #000; 23 TEXT-DECORATION: none; 24 PADDING-TOP: 1px; 25 } 26 27 .pager_manu A:hover { 28 /*BORDER: red 1px solid; */ 29 /*COLOR: #666; */ 30 text-decoration: underline; 31 } 32 33 .pager_manu A:active { 34 /*BORDER: #999 1px solid; */ 35 COLOR: #666; 36 } 37 38 .pager_manu .current { 39 float: left; 40 /*BORDER: #e89954 1px solid;*/ 41 PADDING-BOTTOM: 1px; 42 MARGIN-left: 2px; 43 MARGIN-right: 2px; 44 PADDING-LEFT: 1px; 45 PADDING-RIGHT: 1px; 46 COLOR: #000; 47 FONT-WEIGHT: bold; 48 PADDING-TOP: 1px; 49 color: #ff0000; 50 /*background-color:#ffca7d;*/ 51 } 52 53 .pager_manu .disable { 54 cursor: default; 55 COLOR: #999; 56 text-decoration: none; 57 } 58 59 .pager_manu .summary { 60 float: right; 61 margin-right: 2px; 62 /*COLOR: #036cb4;*/ 63 color: #000000; 64 PADDING-BOTTOM: 1px; 65 MARGIN: 2px; 66 PADDING-LEFT: 2px; 67 PADDING-RIGHT: 2px; 68 TEXT-DECORATION: none; 69 PADDING-TOP: 1px; 70 } 71 72 .pager_manu .pagetext { 73 float: left; 74 cursor: pointer; 75 /*BORDER: #bbb 1px solid; */ 76 PADDING-BOTTOM: 1px; 77 MARGIN: 2px; 78 PADDING-LEFT: 1px; 79 PADDING-RIGHT: 1px; 80 PADDING-TOP: 1px; 81 } 82 83 .pager_manu .pageShowNum { 84 color: blue; 85 } 86 </style> 87 </head> 88 <body> 89 90 <form id="form1" runat="server"> 91 <div> 92 <asp:Repeater ID="Repeater1" runat="server"> 93 <HeaderTemplate> 94 <table border="0" cellspace width="100%" class="mytable newTable"> 95 <thead> 96 <tr style="font-weight: bold; line-height: 25px; height: 25px;"> 97 <td class="brs" width="3%" nowrap="" align="center"> 98 <strong>序號</strong> 99 </td> 100 <td class="brs" width="3%" style="text-align:center;"> 101 102 <asp:CheckBox ID="CheckBox1" runat="server" ToolTip="全選" onclick="checkss(this);" /> 103 104 </td> 105 <td class="brs" > 106 <strong>文件名稱</strong> 107 </td> 108 <td class="brs" width="10%" > 109 <strong>更改名稱</strong> 110 </td> 111 <td class="brs" width="10%"> 112 <strong>文件大小</strong> 113 </td> 114 <td class="brs" width="10%" > 115 <strong>上傳人</strong> 116 </td> 117 <td class="brs" width="15%" style="text-align: center;"> 118 <strong>創建時間</strong> 119 </td> 120 <td class="brs" width="5%"> 121 <strong>排序號</strong> 122 </td> 123 </tr> 124 </thead> 125 <tbody> 126 </HeaderTemplate> 127 <ItemTemplate> 128 <tr id='tr_<%# DataBinder.Eval(Container.DataItem, "FGBH")%>'> 129 <td style="text-align: center; color: Blue;"> 130 <%#Container.ItemIndex + 1 + pageNav1.PageSize * (pageNav1.CurrentPageIndex - 1) %> 131 </td> 132 <td style="color: Blue; text-align:center;"> 133 <input type="checkbox" id="CheckBox11" class="checkBox" guid='<%# DataBinder.Eval(Container.DataItem, "FGBH") %>' /> 134 </td> 135 <td> 136 <div runat="server" id="divpp" style="cursor: pointer; color: #6300FF;"> 137 <%# Eval("FGMC")%> 138 <%-- <asp:Literal ID="ltDown" runat="server"></asp:Literal>--%> 139 </div> 140 </td> 141 <td></td> 142 <td></td> 143 <td style="text-align: center;"> 144 <%# Eval("XGR")%> 145 </td> 146 <td style="text-align: center;"> 147 <%# Eval("CJSJ")%> 148 </td> 149 <td style="text-align: center;"> 150 <%# Eval("PXM")%> 151 </td> 152 </tr> 153 </ItemTemplate> 154 <FooterTemplate> 155 </tbody> </table> 156 </FooterTemplate> 157 </asp:Repeater> 158 </div> 159 <div class="pagingTopDiv"> 160 <oswc:OsPageNavigation ID="pageNav1" runat="server" OnPageIndexChanged="pageNav_PageChanged"> 161 </oswc:OsPageNavigation> 162 </div> 163 </form> 164 </body> 165 </html>
1 using Oceansoft.Net.Bll.Common; 2 using SubSonic; 3 using System; 4 using System.Collections.Generic; 5 using System.Data; 6 using System.Linq; 7 using System.Text; 8 using System.Web; 9 using System.Web.UI; 10 using System.Web.UI.WebControls; 11 12 namespace WebApplication1 13 { 14 public partial class Fenye : System.Web.UI.Page 15 { 16 protected void Page_Load(object sender, EventArgs e) 17 { 18 if (!IsPostBack) 19 { 20 LoadInfo(1); 21 22 } 23 } 24 25 public void LoadInfo(int pageIndex) 26 { 27 PagingEntity_CusMS pe = new PagingEntity_CusMS(); 28 pe.PageIndex = pageIndex; 29 pageNav1.CurrentPageIndex = pe.PageIndex; 30 pe.PageSize = 10; 31 DataTable dt = GetContractMain(pe); 32 this.Repeater1.DataSource = dt; 33 this.Repeater1.DataBind(); 34 CommonBind.BindPageNavigation(pageNav1, pe.PageSize, pe.TotalRecords, pageIndex); 35 } 36 37 protected void pageNav_PageChanged(object src, EventArgs e) 38 { 39 LoadInfo(pageNav1.CurrentPageIndex); 40 } 41 42 public DataTable GetContractMain(PagingEntity_CusMS pe) 43 { 44 StringBuilder sblder = new StringBuilder(); 45 string sql = ""; 46 sblder.Append(" SELECT FGBH AS Guid, * from T_YDZF_FLFG where 1=1 "); 47 48 sql = pe.GetPagingSql_SQLServer(sblder.ToString()); 49 DataTable dt = new DataTable(); 50 51 QueryCommand qc = new InlineQuery().GetCommand(sql, pe.Paras.ToArray()); 52 dt = DataService.GetDataSet(qc).Tables[0]; 53 return dt; 54 } 55 } 56 }
1 using System; 2 using System.Collections.Generic; 3 using System.Collections.Specialized; 4 using System.ComponentModel; 5 using System.Linq; 6 using System.Web; 7 using System.Web.UI; 8 9 namespace WebApplication1 10 { 11 public class PageChangedEventArgs : EventArgs 12 { 13 /// <summary> 14 /// 15 /// </summary> 16 public int NewPagesIndex; 17 /// <summary> 18 /// 19 /// </summary> 20 public int NewPageIndex; 21 22 } 23 /// <summary> 24 /// 25 /// </summary> 26 [DefaultProperty("CurrentPageIndex"), 27 ToolboxData("<oswc:OsPageNavigation runat=server></oswc:OsPageNavigation>")] 28 public class OsPageNavigation : Control, IPostBackDataHandler, IPostBackEventHandler//, ICallbackEventHandler 29 { 30 ///<summary> 31 ///委托頁面索引事件 32 ///</summary> 33 public delegate void PageChangedEventHandler(object sender, PageChangedEventArgs e); 34 35 /// <summary> 36 /// 分頁事件 37 /// </summary> 38 public event PageChangedEventHandler PageIndexChanged; 39 40 # region << Public Properties >> 41 ///<summary> 42 ///樣式屬性 43 ///</summary> 44 [Bindable(false), 45 Category("Style"), 46 DefaultValue("pager_manu")] 47 private string CssClass 48 { 49 get 50 { 51 return "pager_manu"; 52 } 53 } 54 55 private int totalCount = -1; 56 ///<summary> 57 ///記錄總數 58 ///</summary> 59 [Bindable(false), 60 Category("TotalCount"), 61 DefaultValue(0)] 62 public int RecordCount 63 { 64 get 65 { 66 if (totalCount == -1) 67 { 68 if (this.IsNumeric(ViewState["TotalCount"])) 69 { 70 totalCount = (int)ViewState["TotalCount"]; 71 } 72 else 73 { 74 totalCount = 0; 75 } 76 } 77 return totalCount; 78 } 79 set 80 { 81 ViewState["TotalCount"] = value; 82 totalCount = value; 83 } 84 } 85 86 private int pageSize = -1; 87 ///<summary> 88 ///分頁大小 89 ///</summary> 90 [Bindable(false), 91 Category("PageSize"), 92 DefaultValue(15)] 93 public int PageSize 94 { 95 get 96 { 97 if (pageSize == -1) 98 { 99 if (this.IsNumeric(ViewState["PageSize"])) 100 { 101 pageSize = (int)ViewState["PageSize"]; 102 } 103 else 104 { 105 pageSize = 15; 106 } 107 } 108 return pageSize; 109 } 110 set 111 { 112 ViewState["PageSize"] = value; 113 pageSize = value; 114 } 115 } 116 117 private int currentPagesIndex = -1; 118 /// <summary> 119 /// 當前頁群索引 120 /// </summary> 121 [Bindable(false), 122 Category("CurrentPagesIndex"), 123 DefaultValue(0)] 124 public int CurrentPagesIndex 125 { 126 get 127 { 128 if (currentPagesIndex == -1) 129 { 130 if (this.IsNumeric(ViewState["CurrentPagesIndex"])) 131 { 132 currentPagesIndex = (int)ViewState["CurrentPagesIndex"]; 133 } 134 else 135 { 136 currentPagesIndex = 0; 137 } 138 } 139 return currentPagesIndex; 140 } 141 set 142 { 143 ViewState["CurrentPagesIndex"] = value; 144 //currentPagesIndex = value; 145 if (currentPageIndex != 1) 146 currentPagesIndex = value; 147 else 148 currentPagesIndex = 0; 149 } 150 151 } 152 153 private int currentPageIndex = -1; 154 ///<summary> 155 ///當前頁索引 156 ///</summary> 157 [Bindable(false), 158 Category("CurrentPageIndex"), 159 DefaultValue(1)] 160 public int CurrentPageIndex 161 { 162 get 163 { 164 if (currentPageIndex == -1) 165 { 166 if (this.IsNumeric(ViewState["CurrentPageIndex"])) 167 { 168 return (int)ViewState["CurrentPageIndex"]; 169 } 170 else 171 { 172 return 1; 173 } 174 } 175 return currentPageIndex; 176 } 177 set 178 { 179 ViewState["CurrentPageIndex"] = value; 180 currentPageIndex = value; 181 } 182 } 183 184 ///<summary> 185 ///頁群屬性 186 ///</summary> 187 [Bindable(false), 188 Category("PaginationCount"), 189 DefaultValue(10)] 190 public int PaginationCount 191 { 192 get 193 { 194 return 10; 195 } 196 set 197 { 198 ; 199 } 200 } 201 202 203 204 ///// <summary> 205 ///// 是否為異步事件 206 ///// </summary> 207 //[Bindable(false), 208 // Category("IsAsync"), 209 // DefaultValue(0)] 210 //public bool IsAsync 211 //{ 212 // set 213 // { 214 215 // ViewState["IsAsync"] = value; 216 // } 217 // get 218 // { 219 // if (null != ViewState["IsAsync"]) 220 // { 221 // return Boolean.Parse(ViewState["IsAsync"].ToString()); 222 // } 223 // else 224 // { 225 // return false; 226 // } 227 // } 228 //} 229 230 //private bool displayPageInfo = true; 231 /// <summary> 232 /// 是否顯示分頁信息 233 /// </summary> 234 [Bindable(false), 235 DefaultValue(true)] 236 public bool DisplayPageInfo 237 { 238 get 239 { 240 if (ViewState["DisplayPageInfo"] is bool) 241 { 242 return (bool)ViewState["DisplayPageInfo"]; 243 } 244 else 245 { 246 return true; 247 } 248 } 249 set 250 { 251 ViewState["DisplayPageInfo"] = value; 252 } 253 } 254 255 #region <<分頁控件按鈕名稱>> 256 257 ///<summary> 258 ///標記樣式 259 ///</summary> 260 [Bindable(false), 261 Category("Text"), 262 DefaultValue("首頁")] 263 private string FirstName 264 { 265 get 266 { 267 //return ViewState["FirstName"] == null ? "首頁" : (string)ViewState["FirstName"]; 268 return "首頁"; 269 } 270 //set 271 //{ 272 // ViewState["FirstName"] = value; 273 //} 274 } 275 276 277 /// <summary> 278 /// 上一頁 279 /// </summary> 280 [Bindable(false), 281 Category("Text"), 282 DefaultValue("上頁")] 283 private string PreName 284 { 285 get 286 { 287 return "上頁"; 288 //return ViewState["PreName"] == null ? "上一頁" : (string)ViewState["PreName"]; 289 } 290 //set 291 //{ 292 // ViewState["PreName"] = value; 293 294 //} 295 } 296 297 /// <summary> 298 /// 下一頁 299 /// </summary> 300 [Bindable(false)] 301 [Category("Text")] 302 [DefaultValue("下頁")] 303 private string NextName 304 { 305 get 306 { 307 return "下頁"; 308 //return ViewState["NextName"] == null ? "后一頁" : (string)ViewState["NextName"]; 309 } 310 311 //set 312 //{ 313 314 // ViewState["NextName"] = value; 315 316 //} 317 } 318 319 ///<summary> 320 ///下一頁 321 ///</summary> 322 [Bindable(false), 323 Category("Text"), 324 DefaultValue("尾頁")] 325 private string LastName 326 { 327 get 328 { 329 return "尾頁"; 330 //return ViewState["LastName"] == null ? "最后頁" : (string)ViewState["LastName"]; 331 } 332 333 //set 334 //{ 335 336 // ViewState["LastName"] = value; 337 338 //} 339 } 340 341 #endregion 342 343 # endregion 344 345 # region << Public Mothod >> 346 ///<summary> 347 ///當由類實現時,使服務器控件能夠處理將窗體發送到服務器時引發的事件。 348 ///</summary> 349 ///<param name="e">所傳遞的參數</param> 350 public void RaisePostBackEvent(string e) 351 { 352 //當發生回送的時候改變控件當前索引 353 if (e == "top") 354 { 355 CurrentPageIndex = 1; 356 CurrentPagesIndex = 0; 357 } 358 else if (e == "last") 359 { 360 CurrentPageIndex = (RecordCount + PageSize - 1) / PageSize; 361 362 // CurrentPagesIndex = ((RecordCount + PageSize - 1) / PageSize + PaginationCount - 1) / PaginationCount - 1; 363 364 if (CurrentPageIndex < 1) 365 { 366 CurrentPageIndex = 1; 367 } 368 //if (CurrentPagesIndex < 0) 369 //{ 370 // CurrentPagesIndex = 0; 371 //} 372 } 373 else if (e == "pre") 374 { 375 if (CurrentPageIndex > 1) 376 { 377 CurrentPageIndex--; 378 379 //if (CurrentPageIndex < CurrentPagesIndex * PaginationCount && CurrentPageIndex > 0) 380 //{ 381 // CurrentPagesIndex--; 382 //} 383 384 //if (CurrentPageIndex % 10 == 0) 385 // CurrentPagesIndex = CurrentPageIndex / 10 - 1; 386 387 } 388 } 389 else if (e == "next") 390 { 391 if (CurrentPageIndex < (RecordCount + PageSize - 1) / PageSize) 392 { 393 CurrentPageIndex++; 394 395 //if (CurrentPageIndex > (CurrentPagesIndex + 1) * PaginationCount - 1 && CurrentPageIndex < RecordCount - 1) 396 //{ 397 398 // CurrentPagesIndex++; 399 //} 400 } 401 } 402 else 403 { 404 CurrentPageIndex = int.Parse(e.ToString()); 405 } 406 407 //發生回送事件時引發OnPageIndexChange事件 408 PageChangedEventArgs ev = new PageChangedEventArgs(); 409 ev.NewPageIndex = CurrentPageIndex; 410 ev.NewPagesIndex = CurrentPagesIndex; 411 OnPageIndexChanged(this, ev); 412 } 413 414 ///<summary> 415 ///當由類實現時,為 ASP.NET 服務器控件處理回發數據。 416 ///</summary> 417 ///<param name="postDataKey">數據集合元素索引</param> 418 ///<param name="values">string 的排序集合</param> 419 ///<returns></returns> 420 public bool LoadPostData(string postDataKey, NameValueCollection values) 421 { 422 CurrentPageIndex = Int32.Parse(values[this.UniqueID].Split('|')[0]); 423 424 CurrentPagesIndex = Int32.Parse(values[this.UniqueID].Split('|')[1]); 425 426 return false; 427 428 } 429 430 ///<summary> 431 ///當頁面索引改變,觸發委托 432 ///</summary> 433 ///<param name="e"></param> 434 protected virtual void OnPageIndexChanged(object sender, PageChangedEventArgs e) 435 { 436 if (PageIndexChanged != null) 437 PageIndexChanged(sender, e); 438 } 439 # endregion 440 441 #region << override method >> 442 443 ///<summary> 444 ///將此控件呈現給指定的輸出參數。 445 ///</summary> 446 ///<param name="output">要寫出到的 HTML 編寫器 </param> 447 protected override void Render(HtmlTextWriter output) 448 { 449 string Pagestring = ""; //定義頁碼呈現字符串 450 string Text = null; //輸出主結構字符串變量定義 451 int NO = 0; 452 int allPages = (RecordCount + PageSize - 1) / PageSize; //總頁數 453 int startPage = 0; 454 int endPage = PaginationCount; 455 456 //當頁大小小於0時,還原為1,防止預算出現除0錯誤 457 if (!(PageSize > 0)) 458 { 459 PageSize = 1; 460 } 461 462 if (DisplayPageInfo) 463 { 464 if (CurrentPageIndex > 5) 465 { 466 startPage = CurrentPageIndex - 5; 467 if (endPage < allPages) 468 { 469 endPage = CurrentPageIndex + 5; 470 } 471 else 472 { 473 endPage = allPages; 474 } 475 476 } 477 //計算出總頁數,並循環輸出頁碼 478 for (int i = startPage; i < endPage; i++) 479 { 480 //獲得頁群內頁碼 481 NO = PaginationCount * (CurrentPagesIndex) + i + 1; 482 483 if (NO <= allPages) 484 { 485 //判斷頁碼是否為當前頁 486 487 if (CurrentPageIndex != NO) 488 { 489 Pagestring += string.Format("<a href=\"javascript:{0}\" class='pagenumber'>{1}</a>", 490 Page.GetPostBackEventReference(this, (NO).ToString()), (NO).ToString()); 491 } 492 //如果不是,頁面部分無連接 493 else 494 { 495 Pagestring += "<span class='current pagenumber'>" + (NO).ToString() + "</span>"; 496 } 497 } 498 } 499 500 if (!(Pagestring.Trim().Length > 0)) 501 { 502 Pagestring = ""; 503 } 504 } 505 506 507 //輸出主結構 508 Text = string.Format("<div class=\"{0}\">", this.CssClass); 509 510 if (DisplayPageInfo) 511 { 512 int currentPageIndex = CurrentPageIndex; 513 int totalPageCount = RecordCount / PageSize + (RecordCount % PageSize > 0 ? 1 : 0); 514 515 if (currentPageIndex > totalPageCount) 516 currentPageIndex = totalPageCount; 517 518 int perPageCount = PageSize; 519 if (RecordCount >= PageSize) 520 { 521 if (CurrentPageIndex == RecordCount / PageSize + (RecordCount % PageSize > 0 ? 1 : 0)) 522 { 523 perPageCount = RecordCount - (CurrentPageIndex - 1) * PageSize; 524 } 525 } 526 else 527 { 528 perPageCount = RecordCount; 529 } 530 531 Text += string.Format("<div class=\"summary\">共{2}條記錄 當前 {0}/{1} 頁</div>", CurrentPageIndex, RecordCount / PageSize + (RecordCount % PageSize > 0 ? 1 : 0), RecordCount); 532 // Text += string.Format("<div class=\"summary\">記錄總數:<span class=\"pageShowNum\">{2}</span> 當前頁:<span class=\"pageShowNum\">{0}</span> 總頁數:<span class=\"pageShowNum\">{1}</span></div>", perPageCount, RecordCount / PageSize + (RecordCount % PageSize > 0 ? 1 : 0), RecordCount); 533 534 } 535 Text += "<div class='pageinfo'>"; 536 537 if (CurrentPageIndex == 1) 538 { 539 Text += string.Format("<span class='pagetext disable'>{0}</span>", FirstName); 540 } 541 else 542 { 543 Text += string.Format("<a href=\"javascript:{0}\" class='pagetext'>{1}</a>", Page.GetPostBackEventReference(this, "top"), FirstName); 544 } 545 546 if (CurrentPageIndex > 1) 547 { 548 Text += string.Format("<a href=\"javascript:{0}\" class='pagetext'>{1}</a>", Page.GetPostBackEventReference(this, "pre"), PreName); 549 } 550 else 551 { 552 Text += string.Format("<span class='pagetext disable'>{0}</span>", PreName); 553 } 554 555 Text += "$Pagestring$"; 556 557 if (CurrentPageIndex < (RecordCount + PageSize - 1) / PageSize) 558 { 559 Text += string.Format("<a href=\"javascript:{0}\" class=\"pagetext\">{1}</a>", Page.GetPostBackEventReference(this, "next"), NextName); 560 } 561 else 562 { 563 Text += string.Format("<span class='pagetext disable'>{0}</span>", NextName); 564 } 565 566 567 if (CurrentPageIndex == (RecordCount + PageSize - 1) / PageSize) 568 { 569 Text += string.Format("<span class='pagetext disable'>{0}</span>", LastName); 570 } 571 else 572 { 573 if (RecordCount < PageSize || RecordCount == PageSize) 574 { 575 Text += string.Format("<span class='pagetext disable'>{0}</span>", LastName); 576 } 577 else 578 { 579 Text += string.Format("<a href=\"javascript:{0}\" class='pagetext'>{1}</a>", Page.GetPostBackEventReference(this, "last"), LastName); 580 } 581 } 582 Text += "</div>"; 583 584 Text += "</div><input type =\"hidden\" name=\"" + this.UniqueID + "\" value=\"" + this.CurrentPageIndex + "|" + this.CurrentPagesIndex + "\">"; 585 586 //替換頁碼部分 587 Text = Text.Replace("$Pagestring$", Pagestring); 588 if (RecordCount == 0) 589 { 590 output.Write(""); 591 } 592 else 593 { 594 output.Write(Text); 595 } 596 } 597 598 # region << 樣式二 >> 599 /* 600 protected override void Render(HtmlTextWriter output) 601 { 602 string Pagestring = ""; //定義頁碼呈現字符串 603 string Text = null; //輸出主結構字符串變量定義 604 int NO = 0; 605 606 //當頁大小小於0時,還原為1,防止預算出現除0錯誤 607 if (!(PageSize > 0)) 608 { 609 PageSize = 1; 610 } 611 612 if (DisplayPageInfo) 613 { 614 //計算出總頁數,並循環輸出頁碼 615 for (int i = 0; i < PaginationCount; i++) 616 { 617 //獲得頁群內頁碼 618 NO = PaginationCount * (CurrentPagesIndex) + i + 1; 619 if (NO <= (TotalCount + PageSize - 1) / PageSize) 620 { 621 //判斷頁碼是否為當前頁 622 623 if (CurrentPageIndex != NO) 624 { 625 Pagestring += string.Format("<li class=\"pagenumber\"><a onclick=\"javascript:{0}\" href='javascript:void(0)'>{1}</a> </li>", 626 Page.GetPostBackEventReference(this, (NO).ToString()), (NO).ToString()); 627 //string.Format("turnPage({0})", (NO).ToString()), (NO).ToString()); 628 629 } 630 //如果不是,頁面部分無連接 631 else 632 { 633 Pagestring += "<li class='currentpagenumber'><span>" + (NO).ToString() + " </span></li>"; 634 } 635 } 636 } 637 638 if (!(Pagestring.Trim().Length > 0)) 639 { 640 Pagestring = ""; 641 } 642 } 643 644 645 //輸出主結構 646 Text = string.Format("<div class=\"{0}\"><ul>", this.CssClass); 647 if (CurrentPageIndex == 1) 648 { 649 Text += string.Format("<li class='first0'>{0}</li>", FirstName); 650 } 651 else 652 { 653 Text += string.Format("<li class='first'><a href=\"javascript:{0}\">{1}</a></li>", Page.GetPostBackEventReference(this, "top"), FirstName); 654 } 655 656 if (CurrentPageIndex > 1) 657 { 658 Text += string.Format("<li class='pre'><a href=\"javascript:{0}\">{1}</a></li>", Page.GetPostBackEventReference(this, "pre"), PreName); 659 } 660 else 661 { 662 Text += string.Format("<li class='pre0'>{0}</li>", PreName); 663 } 664 665 Text += "$Pagestring$"; 666 667 if (CurrentPageIndex < (TotalCount + PageSize - 1) / PageSize) 668 { 669 Text += string.Format("<li class='next'><a href=\"javascript:{0}\">{1}</a></li>", Page.GetPostBackEventReference(this, "next"), NextName); 670 } 671 else 672 { 673 Text += string.Format("<li class='next0'>{0}</li>", NextName); 674 } 675 676 677 if (CurrentPageIndex == (TotalCount + PageSize - 1) / PageSize) 678 { 679 Text += string.Format("<li class='last0'>{0}</li>", LastName); 680 } 681 else 682 { 683 if (TotalCount < PageSize || TotalCount == PageSize) 684 { 685 Text += string.Format("<li class='last0'>{0}</li>", LastName); 686 } 687 else 688 { 689 Text += string.Format("<li class='last'><a href=\"javascript:{0}\">{1}</a></li>", Page.GetPostBackEventReference(this, "last"), LastName); 690 } 691 } 692 693 if (DisplayPageInfo) 694 { 695 Text += string.Format("<li class=\"summary\">當前 {0}/{1} 頁</li>", CurrentPageIndex, TotalCount / PageSize + (TotalCount % PageSize > 0 ? 1 : 0)); 696 } 697 Text += "</ul></div><input type = hidden name =" + this.UniqueID + " value = " + this.CurrentPageIndex + "|" + this.CurrentPagesIndex + ">"; 698 699 //替換頁碼部分 700 Text = Text.Replace("$Pagestring$", Pagestring); 701 if (TotalCount == 0) 702 { 703 output.Write(""); 704 } 705 else 706 { 707 output.Write(Text); 708 } 709 } 710 */ 711 # endregion 712 # endregion 713 714 # region << Helpler >> 715 716 ///<summary> 717 ///判斷是否為數字字符串 718 ///</summary> 719 ///<param name="str">需驗證的字符串</param> 720 ///<returns>判斷結果,符合條件為True,不符合條件為False</returns> 721 private bool IsNumeric(string str) 722 { 723 724 //判斷是否為空 725 if (str == null || str.Length == 0) 726 { 727 return false; 728 } 729 730 //循環檢查每個字符 731 foreach (char c in str) 732 { 733 if (!Char.IsNumber(c)) 734 { 735 return false; 736 } 737 } 738 return true; 739 } 740 741 ///<summary> 742 ///判斷是否為數字字符串 743 ///</summary> 744 ///<param name="obj">需驗證的字符串</param> 745 ///<returns>判斷結果,符合條件為True,不符合條件為False</returns> 746 private bool IsNumeric(object obj) 747 { 748 obj += ""; 749 string str = obj.ToString(); 750 //判斷是否為空 751 if (str == null || str.Length == 0) 752 { 753 return false; 754 } 755 756 //循環檢查每個字符 757 foreach (char c in str) 758 { 759 if (!Char.IsNumber(c)) 760 { 761 return false; 762 } 763 764 } 765 return true; 766 } 767 # endregion 768 769 #region ICallbackEventHandler 成員 770 /// <summary> 771 /// 772 /// </summary> 773 /// <param name="pageIndex"></param> 774 public void RaiseCallbackEvent(string pageIndex) 775 { 776 int currentPageIndex = int.Parse(pageIndex); 777 778 if (currentPageIndex != CurrentPageIndex) 779 { 780 PageChangedEventArgs ev = new PageChangedEventArgs(); 781 ev.NewPageIndex = int.Parse(pageIndex); 782 783 OnPageIndexChanged(this, ev); 784 } 785 CurrentPageIndex = currentPageIndex; 786 } 787 788 /// <summary> 789 /// 790 /// </summary> 791 private void RegisterClientScripts() 792 { 793 string turnPageScript = "function turnPage(pageIndex) { CallServer(pageIndex);}"; 794 string receiveCallBackScript = "function ReceiveCallback(arg,context){ document.getElementById(context).innerHTML = arg; }"; 795 string callbackReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveCallback", this.ClientID, false); 796 797 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), this.ClientID + "TurnPageScript", turnPageScript, true); 798 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), this.ClientID + "ReceiveCallBackScript", receiveCallBackScript, true); 799 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), this.ClientID + "CallServer", string.Format("function CallServer(arg,context){{ {0} }}", callbackReference), true); 800 } 801 #endregion 802 803 #region IPostBackDataHandler 成員 804 805 /// <summary> 806 /// 807 /// </summary> 808 public void RaisePostDataChangedEvent() 809 { 810 } 811 812 #endregion 813 } 814 }
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 namespace WebApplication1 7 { 8 public class CommonBind 9 { 10 public static void BindPageNavigation(OsPageNavigation pageNav, int pageSize, int recordCount, int pageIndex) 11 { 12 pageNav.PageSize = pageSize; 13 pageNav.RecordCount = recordCount; 14 pageNav.CurrentPageIndex = pageIndex; 15 16 //注意區分CurrentPageIndex和CurrentPagesIndex(多了個“s”) 17 if (pageNav.CurrentPageIndex == 1) 18 pageNav.CurrentPagesIndex = 0; 19 } 20 } 21 }
1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- 3 有關如何配置 ASP.NET 應用程序的詳細信息,請訪問 4 http://go.microsoft.com/fwlink/?LinkId=169433 5 --> 6 <configuration> 7 <configSections> 8 <section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" requirePermission="false"/> 9 <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 10 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 11 </configSections> 12 <connectionStrings> 13 <add name="Test1" connectionString="Data Source=192.168.1.100;Initial Catalog=Test1;User Id=sa;Password=password01!;" providerName="System.Data.SqlClient"/> 14 <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-WebApplication1-20140422093630;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-WebApplication1-20140422093630.mdf" /> 15 </connectionStrings> 16 <appSettings> 17 <add key="EnvironAttachment" value="E:\hbwj\hbwj\flfg\"></add> 18 </appSettings> 19 <SubSonicService defaultProvider="Test1"> 20 <providers> 21 22 <add name="Test1" type="SubSonic.SqlDataProvider, SubSonic" connectionStringName="Test1" generatedNamespace="Oceansoft.Net" maxPoolSize="2000"/> 23 24 </providers> 25 </SubSonicService> 26 <system.web> 27 <pages> 28 <controls> 29 <add tagPrefix="webdiyer" assembly="AspNetPager" namespace="Wuqi.Webdiyer"/> 30 <add tagPrefix="oswc" assembly="WebApplication1" namespace="WebApplication1"/> 31 32 </controls> 33 34 </pages> 35 <compilation debug="true" targetFramework="4.0" /> 36 <authentication mode="Forms"> 37 <forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="~/" /> 38 </authentication> 39 <profile defaultProvider="DefaultProfileProvider"> 40 <providers> 41 <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> 42 </providers> 43 </profile> 44 <membership defaultProvider="DefaultMembershipProvider"> 45 <providers> 46 <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 47 </providers> 48 </membership> 49 <roleManager defaultProvider="DefaultRoleProvider"> 50 <providers> 51 <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> 52 </providers> 53 </roleManager> 54 <!-- 55 If you are deploying to a cloud environment that has multiple web server instances, 56 you should change session state mode from "InProc" to "Custom". In addition, 57 change the connection string named "DefaultConnection" to connect to an instance 58 of SQL Server (including SQL Azure and SQL Compact) instead of to SQL Server Express. 59 --> 60 <sessionState mode="InProc" customProvider="DefaultSessionProvider"> 61 <providers> 62 <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" /> 63 </providers> 64 </sessionState> 65 </system.web> 66 <system.webServer> 67 <modules runAllManagedModulesForAllRequests="true" /> 68 </system.webServer> 69 <runtime> 70 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 71 <dependentAssembly> 72 <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" /> 73 <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0" /> 74 </dependentAssembly> 75 <dependentAssembly> 76 <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" /> 77 <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0" /> 78 </dependentAssembly> 79 </assemblyBinding> 80 </runtime> 81 <entityFramework> 82 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 83 </entityFramework> 84 </configuration>
BLL 文件下的兩個類:PagingEntity,PagingEntity_CusMS
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Oceansoft.Net.Bll.Common 7 { 8 public class PagingEntity 9 { 10 11 12 /// <summary> 13 /// 頁碼 14 /// </summary> 15 public int PageIndex { get; set; } 16 17 /// <summary> 18 /// 總記錄數 19 /// </summary> 20 public int TotalRecords { get; set; } 21 22 private List<string> _SortExpress = new List<string>(); 23 24 /// <summary> 25 /// 排序集合 26 /// </summary> 27 public List<string> SortExpress 28 { 29 get { return this._SortExpress; } 30 set { this._SortExpress = value; } 31 } 32 33 34 private Dictionary<string, string> _filter = new Dictionary<string, string>(); 35 /// <summary> 36 /// 條件集合 37 /// </summary> 38 public Dictionary<string, string> Filter 39 { 40 get { return this._filter; } 41 set { this._filter = value; } 42 } 43 44 45 /// <summary> 46 /// 頁大小 47 /// </summary> 48 public int PageSize { get; set; } 49 50 51 private List<string> _Paras = new List<string>(); 52 53 /// <summary> 54 /// oracle查詢參數 55 /// </summary> 56 public List<string> Paras 57 { 58 get { return this._Paras; } 59 set { this._Paras = value; } 60 } 61 62 /// <summary> 63 /// 獲取單一值 64 /// </summary> 65 /// <param name="strSql"></param> 66 /// <returns></returns> 67 public virtual object GetSingle(string strSql) 68 { 69 return DB.Query().ExecuteScalar<object>(strSql, Paras.ToArray()); 70 } 71 72 73 74 // 75 76 77 78 /// <summary> 79 /// 獲取分頁sql語句Oracle 80 /// </summary> 81 /// <returns></returns> 82 public string GetPagingSql_Orcle(string sqlText) 83 { 84 int PageIndex = 0; 85 PageIndex = this.PageIndex; 86 // 計算分頁大小,和分頁數 87 string sqlTextCount = string.Format("select count(1) from ({0}) t", sqlText); 88 this.TotalRecords = Convert.ToInt32(GetSingle(sqlTextCount)); 89 90 91 92 string sqlTextRecord = @"select * from ( 93 select TT1.*,rownum rn from ({0} {1}) 94 TT1 where rownum <={3}) tt2 95 where rn >{2} "; 96 string orderText = ""; 97 if (this.SortExpress.Count > 0) 98 { 99 for (int i = 0; i < this.SortExpress.Count; i++) 100 { 101 if (!String.IsNullOrEmpty(this.SortExpress[i])) 102 { 103 if (this.SortExpress[i].ToLower().IndexOf("(none)") == -1) 104 { 105 if (orderText == "") 106 orderText = " order by " + this.SortExpress[i]; 107 else 108 orderText += "," + this.SortExpress[i]; 109 } 110 } 111 } 112 } 113 //起始頁為0 114 //sqlTextRecord = string.Format(sqlTextRecord, 115 116 // sqlText, 117 // orderText, 118 // PageIndex * this.PageSize, 119 // (PageIndex + 1) * this.PageSize 120 // ); 121 //起始頁為1 122 PageIndex = PageIndex - 1; 123 sqlTextRecord = string.Format(sqlTextRecord, 124 125 sqlText, 126 orderText, 127 PageIndex * this.PageSize, 128 (PageIndex + 1) * this.PageSize 129 ); 130 return sqlTextRecord; 131 } 132 133 134 135 /// <summary> 136 /// 獲取分頁sql語句SQLServer 137 /// </summary> 138 /// <param name="sqlText"></param> 139 /// <returns></returns> 140 public string GetPagingSql_SQLServer(string sqlText) 141 { 142 143 string sqlTextCount = string.Format("select count(1) from ({0}) t", sqlText); 144 TotalRecords = Convert.ToInt32(this.GetSingle(sqlTextCount)); 145 146 int PageIndex = 0; 147 PageIndex = this.PageIndex; 148 149 string orderText = ""; 150 if (this.SortExpress.Count > 0) 151 { 152 for (int i = 0; i < this.SortExpress.Count; i++) 153 { 154 if (!String.IsNullOrEmpty(this.SortExpress[i])) 155 { 156 if (this.SortExpress[i].ToLower().IndexOf("(none)") == -1) 157 { 158 if (orderText == "") 159 orderText = " " + this.SortExpress[i]; 160 else 161 orderText += "," + this.SortExpress[i]; 162 } 163 } 164 } 165 } 166 if (string.IsNullOrEmpty(orderText)) 167 orderText = "Guid"; 168 PageIndex = PageIndex - 1; 169 string sqlTextRecord = string.Format("select * from (select (ROW_NUMBER() OVER(ORDER BY {1})) as rownumber, TT1.* from ({0}) TT1 ) B where rownumber > {2} and rownumber <= {3} order by {1}", 170 sqlText, 171 orderText, 172 PageIndex * PageSize, 173 (PageIndex + 1) * PageSize 174 ); 175 return sqlTextRecord; 176 } 177 178 /// <summary> 179 /// 獲取sql語句SQLServer(無分頁) 180 /// </summary> 181 /// <param name="sqlText"></param> 182 /// <returns></returns> 183 public string GetPagingSql_SQLServerEs(string sqlText) 184 { 185 186 string sqlTextCount = string.Format("select count(1) from ({0}) t", sqlText); 187 TotalRecords = Convert.ToInt32(this.GetSingle(sqlTextCount)); 188 189 int PageIndex = 0; 190 PageIndex = this.PageIndex; 191 192 string orderText = ""; 193 if (this.SortExpress.Count > 0) 194 { 195 for (int i = 0; i < this.SortExpress.Count; i++) 196 { 197 if (!String.IsNullOrEmpty(this.SortExpress[i])) 198 { 199 if (this.SortExpress[i].ToLower().IndexOf("(none)") == -1) 200 { 201 if (orderText == "") 202 orderText = " " + this.SortExpress[i]; 203 else 204 orderText += "," + this.SortExpress[i]; 205 } 206 } 207 } 208 } 209 if (string.IsNullOrEmpty(orderText)) 210 orderText = "Guid"; 211 PageIndex = PageIndex - 1; 212 string sqlTextRecord = string.Format("select * from (select (ROW_NUMBER() OVER(ORDER BY {1})) as rownumber, TT1.* from ({0}) TT1 ) B order by {1}", 213 sqlText, 214 orderText 215 ); 216 return sqlTextRecord; 217 } 218 219 } 220 }
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Oceansoft.Net.Bll.Common 7 { 8 public class PagingEntity_CusMS:PagingEntity 9 { 10 public override object GetSingle(string strSql) 11 { 12 return Oceansoft.Net.DB.Query().ExecuteScalar<object>(strSql, Paras.ToArray()); 13 } 14 } 15 }
代碼下載: http://files.cnblogs.com/jbps/%E5%88%86%E9%A1%B5%E6%8E%A7%E4%BB%B6AspNetPager.rar
效果圖:

