参考 http://www.codeproject.com/aspnet/custompaging.asp
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CStudy;
namespace CTest
{
/// <summary>
/// Test2 的摘要说明。
/// </summary>
public class DatalistRepeater : System.Web.UI.Page
{
protected System.Web.UI.WebControls.CheckBox CheckBox1;
protected System.Web.UI.WebControls.DataList DataList1;
protected System.Web.UI.WebControls.HyperLink lnkPrev;
protected System.Web.UI.WebControls.HyperLink lnkNext;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Repeater Repeater1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
this.BindData();
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Repeater1.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemDataBound);
this.DataList1.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler(this.DataList1_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void BindData()
{
GlobalInfo gf = new GlobalInfo();
DataTable dt = new DataTable();
string strSQL = "select * from app_user";
dt = gf.getSelect(strSQL);
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = dt.DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 5;
int curPage;
if (Request.QueryString["Page"] != null)
{
curPage = Convert.ToInt32(Request.QueryString["Page"]);
}
else
{
curPage = 1;
}
objPds.CurrentPageIndex = curPage - 1;
Label1.Text = "当前是:" + curPage.ToString() + "页";
if (!objPds.IsFirstPage)
{
lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath.ToString() + "?Page=" + Convert.ToString(curPage - 1);
}
if (!objPds.IsLastPage)
{
lnkNext.NavigateUrl = Request.CurrentExecutionFilePath.ToString() + "?Page=" + Convert.ToString(curPage + 1);
}
DataList1.DataSource=objPds;
DataList1.DataBind();
Repeater1.DataSource = objPds;
Repeater1.DataBind();
}
private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
}
private void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
}
}
}
.aspx
<%@ Register TagPrefix="uc1" TagName="GetPageHtml" Src="GetPageHtml.ascx" %>
<%@ Page language="c#" Codebehind="DatalistRepeater.aspx.cs" AutoEventWireup="false" Inherits="CTest.DatalistRepeater" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Test2</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<script language="javascript">
function setCheckBoxState()
{
var dom = document.all;
var el = event.srcElement;
if(el.tagName == "INPUT" && el.type.toLowerCase() == "checkbox")
{
for(i=0;i<dom.length;i++)
{
if(dom[i].tagName=="INPUT" && dom[i].type.toLowerCase() == "checkbox")
{
dom[i].checked = false;
}
}
el.checked = !el.checked;
}
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0" width="100%" border="0">
<TBODY>
<TR>
<TD><asp:repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" border="1" bordercolor="#000066" bordercolordark="#ffffff"
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial, 宋体" width="100%">
<tr>
<td colspan="5" align="center" bgcolor="#006699">用户信息</td>
</tr>
<tr bgcolor="#006699">
<td width="3%">选择</td>
<td width="20%">用户号</td>
<td width="30%">用户名</td>
<td width="30%">角色</td>
<td width="20%">创建时间</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<TR>
<td>
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
</td>
<td><%#DataBinder.Eval(Container.DataItem,"user_code")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"user_name")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"role_code")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"Created_date")%></td>
</TR>
</ItemTemplate>
<FooterTemplate>
</TABLE>
</FooterTemplate> </asp:repeater>
<P><FONT face="宋体"></FONT> </P>
</TD></TR>
<TR>
<TD><asp:datalist id="DataList1" runat="server" Width="100%">
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" border="1" bordercolor="#000066" bordercolordark="#ffffff"
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial, 宋体" width="100%">
<tr>
<td colspan="5" align="center" bgcolor="#006699">用户信息</td>
</tr>
<tr bgcolor="#006699">
<td width="3%">选择</td>
<td width="20%">用户号</td>
<td width="30%">用户名</td>
<td width="30%">角色</td>
<td width="20%">创建时间</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<TR>
<TD>
<asp:CheckBox id="Checkbox2" runat="server"></asp:CheckBox></TD>
<TD><%#DataBinder.Eval(Container.DataItem,"user_code")%></TD>
<TD><%#DataBinder.Eval(Container.DataItem,"user_name")%></TD>
<TD><%#DataBinder.Eval(Container.DataItem,"role_code")%></TD>
<TD><%#DataBinder.Eval(Container.DataItem,"Created_date")%></TD>
</TR>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:datalist>
<P><asp:hyperlink id="lnkPrev" runat="server">上一页</asp:hyperlink><FONT face="宋体"> </FONT><asp:hyperlink id="lnkNext" runat="server">下一页</asp:hyperlink><FONT face="宋体"> </FONT><asp:label id="Label1" runat="server"></asp:label></P>
</TD>
</TR>
</TBODY></TABLE></form>
</body>
</HTML>
---------------------------------------------------------------------------
you have to create them yourself, for example, you have to remember the PageCount property, then based on the CurrentPageIndex:
Dim tr As New TableRow
Dim tc As New TableCell
Dim lb As LinkButton
Dim lbl As Label
Dim i As Integer
If CurrentPageIndex = 0 Then
tc.Controls.Add(New LiteralControl(ht("previous").ToString()))
Else
lb = New LinkButton
lb.ID = "Previous"
lb.Text = ht("previous").ToString()
tc.Controls.Add(lb)
lb.CommandArgument = "previous"
AddHandler lb.Click, AddressOf Paging_Changed
End If
tc.Controls.Add(New LiteralControl(" | "))
If CurrentPageIndex >= PageCount - 1 Then
tc.Controls.Add(New LiteralControl(ht("next").ToString()))
Else
lb = New LinkButton
lb.ID = "Next"
lb.Text = ht("next").ToString()
tc.Controls.Add(lb)
lb.CommandArgument = "next"
AddHandler lb.Click, AddressOf Paging_Changed
End If
tc.Controls.Add(New LiteralControl(" " & ht("resultpage").ToString() & " "))
For i = 0 To PageCount - 1
If i <> 0 Then
tc.Controls.Add(New LiteralControl(" | "))
End If
If i = CurrentPageIndex Then
lbl = New Label
lbl.ID = "lbl" & i.ToString()
lbl.Font.Bold = True
lbl.Text = (i + 1).ToString
tc.Controls.Add(lbl)
Else
lb = New LinkButton
lb.ID = "lb" & i.ToString()
lb.Text = (i + 1).ToString
AddHandler lb.Click, AddressOf Paging_Changed
tc.Controls.Add(lb)
lb.CommandArgument = lb.Text
End If
Next
tr.Cells.Add(tc)
t.Rows.Add(tr)
------------------------------------------------------------------------------------------
<script>PageCount=<%=id(1)%> //总页数
topage=<%=topage%> //当前停留页也就是rs.absolutepage
document.write("总共"+PageCount+"页 ");
document.write("每页"+<%=pagesetup%>+"条")
for (var i=1; i <= PageCount; i++)
{
if (i <= topage+3 && i >= topage-3 || i==1 || i==PageCount)
{
if (i > topage+4 || i < topage-2 && i!=1 && i!=2 ){document.write(" ... ");}
if (topage==i)
{document.write(" <font color=#FF0000>"+ i +"</font> ");}
else
{
document.write("<a href=?topage="+i+" class=10point>["+ i +"]</a> ");
}
}
}
document.write("页")
</script>
用这种方法最好了...