页面代码:
<table cellpadding="0" cellspacing="0" border="0" width="755" style=" width:755px; word-break:break-all;" class="title_huati">
<tr>
<td align=left style="font-size:12px;">
共 <asp:Label ID="lblTotalCount" runat="server"></asp:Label> 条记录--第 <asp:Label ID="lblPageIndex" runat="server"></asp:Label> 页--共 <asp:Label ID="lblPageCount" runat="server"></asp:Label> 页
</td>
<td align=right style="font-size:12px;">
<asp:LinkButton ID="btnFirst" runat="server" OnClick="btnFirst_Click">首页</asp:LinkButton>
<asp:LinkButton ID="btnPrevious" runat="server" OnClick="btnPrevious_Click">上一页</asp:LinkButton>
<asp:LinkButton ID="btnNext" runat="server" OnClick="btnNext_Click">下一页</asp:LinkButton>
<asp:LinkButton ID="btnLast" runat="server" OnClick="btnLast_Click">尾页</asp:LinkButton>
<asp:DropDownList ID="drpPage" runat=server AutoPostBack=true OnSelectedIndexChanged="drpPage_SelectedIndexChanged"></asp:DropDownList>
</td>
</tr>
</table>
后台代码:
//数据源对象
public static PagedDataSource pds = new PagedDataSource();
protected void Page_Load(object sender, EventArgs e)
{
if (!this.Page.IsPostBack)
{
pds.AllowPaging = true;//允许分页
pds.CurrentPageIndex = 0;//当前页的索引设置为0,即第一页的索引为0
pds.PageSize = 8;//单页显示的项数
RefreshStatus();
}
//分页绑定班级通讯录
//
if (!this.Page.IsPostBack)
{
FillPager(pds.PageCount + 1);
}
}
//流程:1.先在页面加载的时候,把PagedDataSource的参数设置好(如单页显示多少条纪录)
// 2.pds.DataSource = AdminManager.GetAllAdmins();这样就变成有分页的数据了,然后再和DataList绑定就好了
private void RefreshStatus()
{
DataSet ds = new DataSet();
if (CurentUser.TXLClassID != null)//合法用户具有班级信息
{
if (Session["dsTXL"] == null)//本地缓存数据不存在
{
ds = EduServiceHelper.GetStusByClassidNum(CurentUser.TXLClassID.ToString(), "50");//检索数据库
Session["dsTXL"] = ds;//设置本地缓存数据
Session["ClassId"] = CurentUser.TXLClassID;//设置本地缓存数据
}
if (CurentUser.TXLClassID != Session["ClassId"].ToString())//切换了班级
{
ds = EduServiceHelper.GetStusByClassidNum(CurentUser.TXLClassID.ToString(), "50");//检索数据库
Session["dsTXL"] = ds;//设置本地缓存数据
Session["ClassId"] = CurentUser.TXLClassID;//设置本地缓存数据
}
else
ds = (DataSet)Session["dsTXL"];//本地缓存数据存在,直接取本地缓存数据
//分页绑定数据
if (ds.Tables["CallResult"].Rows[0][0].ToString() == "0" && ds.Tables["ds"] != null)//
{
pds.DataSource = ds.Tables[0].DefaultView;
gv_class_message.DataSource = pds;
gv_class_message.DataBind();
this.lblCount.Text = ds.Tables[0].Rows.Count.ToString();
this.lblTotalCount.Text = ds.Tables[0].Rows.Count.ToString();
btnFirst.Enabled = !pds.IsFirstPage;//判断当前页是不是第一页,如果是,那么"第一页"的按钮就应该不可用
btnPrevious.Enabled = !pds.IsFirstPage;//判断当前页是不是第一页,如果是,那么"上一页"的按钮就应该不可用
btnNext.Enabled = !pds.IsLastPage;
btnLast.Enabled = !pds.IsLastPage;
lblPageIndex.Text = Convert.ToString(pds.CurrentPageIndex + 1);//如果当前页是第一页,pds.CurrentPageIndex的值会为0,所以要+1
lblPageCount.Text = pds.PageCount.ToString();
if (this.drpPage.Items.Count > 0)
{
this.drpPage.SelectedValue = this.lblPageIndex.Text.ToString();
}
}
}
}
protected void btnFirst_Click(object sender, EventArgs e)
{
pds.CurrentPageIndex = 0;//如果是第一页,就把pds.CurrentPageIndex参数设置为0,然后在绑定
RefreshStatus();
}
protected void btnLast_Click(object sender, EventArgs e)
{
pds.CurrentPageIndex = pds.PageCount - 1;
RefreshStatus();
}
protected void btnNext_Click(object sender, EventArgs e)
{
pds.CurrentPageIndex += 1;
RefreshStatus();
}
protected void btnPrevious_Click(object sender, EventArgs e)
{
pds.CurrentPageIndex -= 1;
RefreshStatus();
}
protected String getValue()
{
return String.Empty;
}
protected void drpPage_SelectedIndexChanged(object sender, EventArgs e)
{
pds.CurrentPageIndex = Convert.ToInt32(this.drpPage.SelectedValue) - 1;
RefreshStatus();
}
protected void FillPager(Int32 pageindex)
{
this.drpPage.Items.Clear();
for (int i = 1; i < pageindex; i++)
{
this.drpPage.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
}
浙公网安备 33010602011771号