标签:
其实Repeater分页是一个很简单的过程,只要你仔细看里面的逻辑,相信你也可以做到!
准备页面素材:
1、前台页面需要放置一个 Repeater ,用来显示您索要显示的数据。
2、一个隐藏域 lable 用来控制页数。
3、 两个图片按钮 用来实现点击切换页码。
后台:
1、数据源,我们使用Datatable,用来绑定Repeater。
2、分页控制数据源 PagedDataSource,用来分页填充。
原理:
设置PagedDataSource显示条数,然后将PagedDataSource的当前页的数据填充给Repeater,这样就实现了分页效果。
前台代码:
<div style="height:1135px">
<div class="ngg">新闻公告</div>
<div class="new">
<ul>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<li>
<div class="newbt">
<a href="newstestshow.aspx?id=<%#Eval("news_id") %>"><%#Eval("news_title") %></a>
</div>
<div class="newtime"><%#Eval("new_time") %></div>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
<div class="yeshu">
<!--上一页按钮 -->
<asp:Button ID="btnP" runat="server" Text="上一页" onclick="btnP_Click" />
<!-- 下一页按钮 -->
<asp:Button ID="btnN" runat="server" Text="下一页" onclick="btnN_Click" />
<!-- 隐藏域ID, 用来控制当前 PagedDataSource 的页数 -->
<asp:Label Visible="false" ID="lblCount" runat="server" Text="1"></asp:Label>
</div>
</div>
后台代码:
public void Bind()
{
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("select * from new_news order by news_id desc", connStr);
//指定数据源
da.Fill(dt);
//实例化pagerDatatable
PagedDataSource pds = new PagedDataSource();
//给pds绑定数据
pds.DataSource = dt.DefaultView;
//设定可分页
pds.AllowPaging = true;
//可以分几条
pds.PageSize = 8;
//设定默认页
pds.CurrentPageIndex = Convert.ToInt32(lblCount.Text.ToString ())-1;
Repeater1.DataSource=pds;
//如果大于当前页
if(pds.CurrentPageIndex>=1)
{
btnP.Enabled=true;
btnN.Enabled=true;
}
//如果是最后一页,让下一页按钮不起作用
if(pds.CurrentPageIndex==pds.PageCount-1)
{
btnN.Enabled=false;
btnP.Enabled=true;
}
//如果是第一页
if(pds.CurrentPageIndex==0)
{
btnP.Enabled=false;
btnN.Enabled=true;
}
Repeater1.DataBind();
}
//下一页事件
protected void btnN_Click(object sender, EventArgs e)
{
lblCount.Text = (Convert.ToInt32(lblCount.Text.ToString()) + 1).ToString ();
this.Bind();
}
//上一页事件
protected void btnP_Click(object sender, EventArgs e)
{
lblCount.Text = (Convert.ToInt32(lblCount.Text.ToString()) - 1).ToString ();
this.Bind();
}
Page_Load:
protected void Page_Load(object sender, EventArgs e)
{
Bind();//在窗体加载的时候调用
}
标签:
原文地址:http://www.cnblogs.com/yisen-1/p/4238770.html