//Js 去掉超链接下划线
<style type="text/css">
<!--
A:link{text-decoration:none}
A:visited{text-decoration:none}
A:hover {color: #ff00ff;text-decoration:underline}
-->
</style>
/***********************************repeater下的分页(带有,2,3...)*********************************/
///写在<FooterTemplate>里的代码
<FooterTemplate>
<tr>
<td colspan="6">
<br />
共<asp:Label ID="lblPageCount" runat="server" Text=""></asp:Label>页,当前第<asp:Label
ID="lblCurrentPage" runat="server" Text=""></asp:Label>页,
每页<asp:Label ID="Ts" runat="server" Text=""></asp:Label>条,
共<asp:Label ID="zg" runat="server" Text=""></asp:Label>条记录
<asp:HyperLink ID="hlFirst" runat="server" Text="首页"></asp:HyperLink>
<asp:HyperLink ID="hlPrev" runat="server" Text="上一页"></asp:HyperLink>
<asp:PlaceHolder ID="numeric" runat="server"></asp:PlaceHolder>
<asp:HyperLink ID="hlNext" runat="server" Text="下一页"></asp:HyperLink>
<asp:HyperLink ID="hlLast" runat="server" Text="尾页"></asp:HyperLink>
<asp:DropDownList ID="ddlJumpPage" runat="server">
</asp:DropDownList>
<asp:ImageButton ID="ibtnGo" runat="server" Width="30px" Height="20px" ImageAlign="Bottom"
ImageUrl="~/images/go.jpg" OnClick="ibtnGo_Click" />
</td>
</tr>
</table>
</FooterTemplate>
///
/*****************************************写在cs里的代码***************************************/
/************注意不要忘记在页面代码里加上
<asp:Repeater ID="rpTest" runat="server" OnItemDataBound="rpTest_ItemDataBound" OnItemCreated="rpTest_ItemCreated">
带红色的代码 *****************************************/
//下面是给Repeater绑定数据
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
rpTest.DataSource = GetPds();
rpTest.DataBind();
DropDownList ddlJumpPage = (DropDownList)rpTest.Controls[this.rpTest.Controls.Count - 1].FindControl("ddlJumpPage"); /************************************************* 这里为什么要 减1 *********************/
ddlJumpPage.SelectedIndex = GetPds().CurrentPageIndex;
}
}
/// <summary>
/// 返回待绑定的数据源
/// </summary>
/// <returns></returns>
private PagedDataSource GetPds()
{
StudentManager stu = new StudentManager(); //这两句代码是用来调用数据加载方法(GetStudent()它实现的是Select
)的,要因地制宜;
DataSet ds = stu.GetStudent();
PagedDataSource pds = new PagedDataSource();
//设置数据源
pds.DataSource = ds.Tables[0].DefaultView;
pds.AllowPaging = true; //允许分页
pds.PageSize = 5; //一页显示5条数据
if(Request.QueryString["page"] != null) //判断页面传值是否为空
{
pds.CurrentPageIndex = Int32.Parse(Request.QueryString["page"].ToString()) - 1; //??????这个地方为什么要减1(我猜是去掉最后的那个空字符)
}
else
{
pds.CurrentPageIndex = 0;
}
return pds;
}
/// <summary>
/// 显示底部分页按钮并向下拉控件中填充数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void rpTest_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if(GetPds().DataSourceCount != 0)
{
if(e.Item.ItemType == ListItemType.Footer) //判断是否为页脚
{
Label lblRecordCount = (Label)e.Item.FindControl("lblRecordCount"); //
Label lblPageCount = (Label)e.Item.FindControl("lblPageCount"); //总页数
Label lblCurrentPage = (Label)e.Item.FindControl("lblCurrentPage"); //总记录数
Label Ts = (Label)e.Item.FindControl("Ts"); //每页多少条记录数
Label zg = (Label)e.Item.FindControl("zg");
HyperLink hlFirst = (HyperLink)e.Item.FindControl("hlFirst"); //首页
HyperLink hlPrev = (HyperLink)e.Item.FindControl("hlPrev"); // 上一页
HyperLink hlNext = (HyperLink)e.Item.FindControl("hlNext"); // 下一页
HyperLink hlLast = (HyperLink)e.Item.FindControl("hlLast"); // 尾页
DropDownList ddlJumpPage = (DropDownList)e.Item.FindControl("ddlJumpPage");
int pagesize = GetPds().PageSize; // 每页的记录数
int counts = GetPds().DataSourceCount; //总记录数
int pageCount = GetPds().PageCount; //总页数
int curPrage = GetPds().CurrentPageIndex + 1; //当前页 ???为什么要加1 (因为索引下标是0 的原因吗)
for (int i = 1; i <= pageCount;i++ )
{
ddlJumpPage.Items.Add(i.ToString());
}
if (pageCount == 1) //当总页数只有一页,则底部分页链接不可用
{
hlFirst.Enabled = false;
hlPrev.Enabled = false;
hlNext.Enabled = false;
hlLast.Enabled = false;
}
else
{
if (curPrage <= 1) //若当前为首页,则首页和上一页的链接不可用
{
hlFirst.Enabled = false;
hlPrev.Enabled = false;
hlNext.Enabled = true;
hlLast.Enabled = true;
}
else
{
hlPrev.NavigateUrl = "?page=" +(curPrage - 1);
}
if (curPrage >= pageCount) //若当前页为最后一页,则下一页和尾页的链接不可用
{
hlFirst.Enabled = true;
hlPrev.Enabled = true;
hlNext.Enabled = false;
hlLast.Enabled = false;
}
else
{
hlNext.NavigateUrl = "?page=" + (curPrage + 1);
}
hlFirst.NavigateUrl = "?page=1";
hlLast.NavigateUrl = "?page=" + pageCount;
}
lblPageCount.Text = pageCount.ToString();
lblCurrentPage.Text = curPrage.ToString();
Ts.Text = pagesize.ToString();
zg.Text = counts.ToString();
}
}
else // 若数据源中无信息,则显示相关提示
{
rpTest.Visible = false;
lblMessage.Text = "无相关记录";
}
}
/// <summary>
/// go!按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ibtnGo_Click(object sender, EventArgs e)
{
DropDownList ddlJumpPage = (DropDownList)rpTest.Controls[this.rpTest.Controls.Count - 1].FindControl("ddlJumpPage");
Response.Redirect("Default.aspx?page=" + ddlJumpPage.SelectedValue);
}
/// <summary>
/// 显示页码导航
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void rpTest_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if(GetPds().DataSourceCount != 0)
{
if(e.Item.ItemType == ListItemType.Footer)
{
PlaceHolder ph = (PlaceHolder)e.Item.FindControl("numeric");
int pageCount = GetPds().PageCount;
int curPage = GetPds().CurrentPageIndex + 1;
int startIndext = (curPage - 1) / 5 * 5 + 1; //根据当前页得到第一个页码
int endIndex = startIndext + 9; //显示10个页码 这句代码是设置你页面上显示多少个数字
if (endIndex > pageCount) //判断是否为最后一页
{
endIndex = pageCount;
}
//这个for是Vs08下的,在VS05下要报错,可改为蓝色代码
for (int i = startIndext; i <= endIndex; i++) //通过循环动态显示页码
{
var hl = new HyperLink { ID = "hl" + i, Text = i.ToString(), NavigateUrl = "?page=" + i };
ph.Controls.Add(i != curPage ? (Control)hl : new LiteralControl(i.ToString()));
ph.Controls.Add(new LiteralControl(" "));
}
for (int i = startIndext; i <= endIndex; i++) //通过循环动态显示页码
{
HyperLink hl = new HyperLink();
//{ID = "hl" + i, hl.Text = i.ToString(), hl.NavigateUrl = "?page=" + i};
hl.ID = "hl" + i;
hl.Text = i.ToString();
hl.NavigateUrl = "?page=" + i;
ph.Controls.Add(i != curPage ? (Control)hl : new LiteralControl(i.ToString()));
ph.Controls.Add(new LiteralControl(" "));
}
}
}
}
/**************************************