ที่มา: คอลัมน์ของ snooker_li
ฉันเพิ่งสร้างโปรแกรมอัลบั้มรูปภาพที่ต้องใช้เพจบ่อยครั้ง ดังนั้นฉันจึงต้องการเขียนการควบคุมผู้ใช้
รหัสจะเป็นดังนี้:
หน้า AutoPage.ascx
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="AutoPage.ascx.cs" Inherits="album.AutoPage" TargetSchema=" http://schemas.microsoft .com/ Intellisense/ie5 " %>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="middle" height="30">รวม <asp:label id="lb_ItemCount" ForeColor="Red" runat="server"></asp:label> บันทึก </td>
<td valign="middle" height="30"><asp:hyperlink id="hpl_First" runat="server">หน้าแรก</asp:hyperlink> </td>
<td valign="middle" height="30"><asp:hyperlink id="hpl_Prev" runat="server">หน้าก่อนหน้า</asp:hyperlink> </td>
<td valign="middle" height="30">ปัจจุบัน<asp:label id="lb_CurrentPage" runat="server"></asp:label>pages/total<asp:label id="lb_PageCount" runat=" เซิร์ฟเวอร์"></asp:label>หน้า </td>
<td valign="middle" height="30"><asp:hyperlink id="hpl_Next" runat="server">หน้าถัดไป</asp:hyperlink> </td>
<td valign="middle" height="30"><asp:hyperlink id="hpl_Last" runat="server">หน้าสุดท้าย</asp:hyperlink> </td>
<td valign = "middle" height = "30"><asp:textbox id = "txb_Page" runat = "เซิร์ฟเวอร์" width = "32px" BorderStyle = "Solid" BorderWidth = "1px"
BorderColor="สีเงิน"></asp:textbox></td>
<td valign="middle" height="30"><asp:ImageButton id="btn_go" runat="server" ImageUrl="album_images/go.gif"></asp:ImageButton></td>
<td valign="middle" height="30"><asp:label id="lb_url" runat="server" Visible="False"></asp:label><asp:Label id="lb_Params" runat= "เซิร์ฟเวอร์" Visible="False"></asp:Label></td>
</tr>
</table>
อัลบั้มเนมสเปซ
เพจ AutoPage.ascx.cs
-
ใช้ระบบ;
ใช้ System.Data;
โดยใช้ระบบการวาดภาพ;
ใช้ System.Web;
ใช้ System.Web.UI.WebControls;
ใช้ System.Web.UI.HtmlControls;
โดยใช้ System.Data.SqlClient;
/// <สรุป>
/// คำอธิบายโดยย่อของ UC
/// </สรุป>
AutoPage คลาสสาธารณะ: System.Web.UI.UserControl
-
ป้องกัน System.Web.UI.WebControls.HyperLink hpl_First;
ป้องกัน System.Web.UI.WebControls.HyperLink hpl_Prev;
ป้องกัน System.Web.UI.WebControls.HyperLink hpl_Next;
ป้องกัน System.Web.UI.WebControls.Label lb_CurrentPage;
ป้องกัน System.Web.UI.WebControls.Label lb_PageCount;
ป้องกัน System.Web.UI.WebControls.HyperLink hpl_Last;
ขนาดหน้า int สาธารณะ;
สตริงสาธารณะ PageP;
ป้องกัน System.Web.UI.WebControls.TextBox txb_Page;
ป้องกัน System.Web.UI.WebControls.Label lb_url;
ป้องกัน System.Web.UI.WebControls.Label lb_ItemCount;
URL สตริงสาธารณะ
ป้องกัน System.Web.UI.WebControls.Label lb_Params;
ป้องกัน System.Web.UI.WebControls.ImageButton btn_go;
Params สตริงสาธารณะ
โมฆะส่วนตัว Page_Load (ผู้ส่งวัตถุ System.EventArgs e)
-
}
ฐานข้อมูล PagedDataSource สาธารณะ (DataTable dt)
-
lb_url.Text = url;
lb_Params.Text = พารามิเตอร์;
//สร้างคลาสการเพจ
PagedDataSource objPage = PagedDataSource ใหม่ ();
//ตั้งค่าแหล่งข้อมูล
objPage.DataSource = dt.DefaultView;
//ขออนุญาตเพจ
objPage.AllowPaging = จริง;
//กำหนดจำนวนรายการที่แสดงในแต่ละหน้า
objPage.PageSize = ขนาดหน้า;
//ตั้งค่าดัชนีของหน้าปัจจุบัน
int CurPage=1;
พยายาม
-
CurPage = Convert.ToInt32(PageP);
ถ้า (CurPage<1 || CurPage>objPage.PageCount)
-
Response.Redirect(url+"?page=1"+Params);
-
-
จับ
-
Response.Redirect(url+"?page=1"+Params);
-
objPage.CurrentPageIndex = CurPage-1;
//แสดงข้อมูลสถานะ
lb_ItemCount.Text = dt.Rows.Count.ToString();
lb_CurrentPage.Text = CurPage.ToString();
lb_PageCount.Text =objPage.PageCount.ToString();
//หากหน้าปัจจุบันไม่ใช่หน้าแรก
ถ้า (!objPage.IsFirstPage)
-
hpl_Prev.NavigateUrl=url + "?Page=" + Convert.ToString(CurPage-1)+Params;
hpl_First.NavigateUrl=url + "?Page=1"+พารามิเตอร์;
-
//หากหน้าปัจจุบันไม่ใช่หน้าสุดท้าย
ถ้า (!objPage.IsLastPage)
-
hpl_Next.NavigateUrl=url+ "?Page=" + Convert.ToString(CurPage+1)+Params;
hpl_Last.NavigateUrl=url + "?Page=" +objPage.PageCount.ToString()+พารามิเตอร์;
-
กลับ objPage;
-
#region รหัสที่สร้างโดยนักออกแบบเว็บฟอร์ม
แทนที่การป้องกันโมฆะ OnInit (EventArgs e)
-
-
// CODEGEN: การเรียกนี้จำเป็นโดยผู้ออกแบบ ASP.NET Web Forms
-
เตรียมใช้งานส่วนประกอบ();
ฐาน OnInit(e);
-
/// <สรุป>
/// Designer รองรับวิธีการที่จำเป็น - อย่าใช้โปรแกรมแก้ไขโค้ด
/// แก้ไขเนื้อหาของเมธอดนี้
/// </สรุป>
โมฆะส่วนตัว InitializeComponent()
-
this.btn_go.Click += System.Web.UI.ImageClickEventHandler ใหม่ (this.btn_go_Click);
this.Load += ใหม่ System.EventHandler(this.Page_Load);
}
#endregion
โมฆะส่วนตัว btn_go_Click (ผู้ส่งวัตถุ System.Web.UI.ImageClickEventArgs e)
-
Response.Redirect(lb_url.Text+"?Page="+txb_Page.Text+lb_Params.Text);
-
-
}
เมื่อเรียก คุณจะต้องตั้งค่าพารามิเตอร์หลายขนาดหน้า (จำนวนข้อมูลที่แสดงในแต่ละหน้า), PageP (พารามิเตอร์การเพจที่ส่งผ่าน), ParmP (พารามิเตอร์ Request.QureyString อื่น ๆ) และ url (ที่อยู่หน้า)
เฉพาะคุณเท่านั้น จำเป็นต้องผูกตัวควบคุม DataSource=AutoPage1.databind(ตัวแปร DataTable)