一.分页存贮过程
ALTER procedure A_AdminListPading
(
@CurrentPage int,
@PageSize int,
@InfoCount int output
)
as
//建张临时表将数据表数据插进去避免因id缺失导致的页面显示数据不全问题
create table #Admins
(
AdminsId int identity(1,1) primary key(AdminsId),
AdminId int,
AdminName nvarchar(20),
AdminPass nvarchar(20)
)
insert into #Admins(AdminId,AdminName,AdminPass) select AdminId,AdminName,AdminPass from S_Admin
select @InfoCount = count(AdminId) from #Admins
declare @beginId int
declare @endId int
set @beginId = @CurrentPage*@PageSize-@PageSize+1
set @endId = @CurrentPage*@PageSize
select AdminId,AdminName,AdminPass from #Admins where AdminsId between @beginId and @endId
Return
二.cs文件 这里只是简单封装了一下,让大家看一下!
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;
/// <summary>
/// Pading 的摘要说明
/// </summary>
public class Pading
{
public Pading() { }
//从配置节中读取连接字符串
string strCon = ConfigurationSettings.AppSettings["ConnectionString"].ToString();
//实现首页,上一页,下一页,尾页
public void command(string commandName, HiddenField hiddenCurrentPage, int PageTotal)
{
switch (commandName)
{
case "firstPage":
hiddenCurrentPage.Value = "1";
break;
case "upPage":
hiddenCurrentPage.Value = (int.Parse(hiddenCurrentPage.Value) - 1).ToString();
break;
case "nextPage":
hiddenCurrentPage.Value = (int.Parse(hiddenCurrentPage.Value) + 1).ToString();
break;
case "lastPage":
hiddenCurrentPage.Value = PageTotal.ToString();
break;
}
}
//分页数据绑定
public int BindData(DataList DataList1, HiddenField hiddenCurrentPage, LinkButton lbtnFirstPage, LinkButton lbtnUpPage, LinkButton lbtnNextPage, LinkButton lbtnLastPage, Label lblPageList, Label lblPageTotal,string ID,string padings,int PageSize)
{
//获取当前页码
int currentPage = int.Parse(hiddenCurrentPage.Value);
//从数据库中提取数据
SqlParameter _paras = new SqlParameter("@InfoCount", SqlDbType.Int);
_paras.Direction = ParameterDirection.Output;
SqlParameter[] paras = { new SqlParameter("@CurrentPage", currentPage), new SqlParameter("@PageSize", PageSize), _paras };
DataSet ds = Sparter.DAL.SqlHelper.ExecuteDataset(strCon, CommandType.StoredProcedure,padings, paras);
DataList1.DataSource = ds;
DataList1.DataKeyField = ID;
DataList1.DataBind();
//计算出总页数
int pageTotal;
double infoCount = Convert.ToInt32(_paras.Value);
if (infoCount % PageSize == 0)
{
pageTotal = int.Parse(Math.Ceiling(infoCount / PageSize).ToString());
}
else
{
int infoCounts = Convert.ToInt32(infoCount);
pageTotal = Convert.ToInt32(infoCounts / PageSize + 1);
}
//对按纽做限制
lbtnFirstPage.Enabled = hiddenCurrentPage.Value != "1";
lbtnUpPage.Enabled = hiddenCurrentPage.Value != "1";
lbtnNextPage.Enabled = hiddenCurrentPage.Value != pageTotal.ToString();
lbtnLastPage.Enabled = hiddenCurrentPage.Value != pageTotal.ToString();
lblPageList.Text = "";
for (int i = 1; i <= pageTotal; i++)
{
if (currentPage == i)
{
lblPageList.Text += i + " ";
}
else
{
//调用页面js改变页码
lblPageList.Text += "<a href=/"javascript:ChangePage(" + i + ")/">" + i + "</a> ";
}
lblPageTotal.Text = "一共有" + pageTotal.ToString() + "页";
}
//返回总页数
return pageTotal;
}
}
三.页面中使用
.cs文件中
//绑定数据
void BindData()
{
ViewState["PageTotal"] = p.BindData(dlstAdminList, hiddenCurrentPage, lbtnFirstPage, lbtnUpPage, lbtnNextPage, lbtnLastPage, lblPageList, lblPageTotal, "AdminId", "A_AdminListPading", 1);
}
//实现首页,上一页,下一页,尾页的翻页效果
protected void Pading_Command(object sender, CommandEventArgs e)
{
p.command(e.CommandName, hiddenCurrentPage, int.Parse(ViewState["PageTotal"].ToString()));
BindData();
}
//实现动态页码翻页效果
protected void Pading_Click(object sender, EventArgs e)
{
BindData();
}
.aspx文件中
<asp:Content ContentPlaceHolderID=ContentPlaceHolder1 EnableViewState=true runat=server Visible=true>
<div id="DIV1" runat="server">
<script language=javascript>
function ChangePage(i)
{
document.all.hiddenCurrentPage.value = i;
__doPostBack('btnClick','');
}
</script>
<table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 420px">
<tr>
<td align="center">管理员列表</td>
</tr>
<tr>
<td align="center" style="height: 145px">
<asp:DataList ID="dlstAdminList" runat="server" Height="140px">
<ItemTemplate>
<table id="TABLE1" border="0" cellpadding="0" cellspacing="0" language="javascript"
οnclick="return TABLE1_onclick()" style="width: 339px">
<tr>
<td style="width: 168px; height: 19px"><%# Eval("AdminName") %></td>
<td style="width: 100px; height: 19px"><a href='javascript:if(confirm("确实要删除吗?"))location="AdminDelete.aspx?&areyou=删除&AdminId=<%# Eval("AdminId") %>"'>删除</a></td>
<td style="width: 100px; height: 19px"><a href='javascript:if(confirm("确实要更新吗?"))location="AdminEdit.aspx?&areyou=更新&AdminId=<%# Eval("AdminId") %>&AdminName=<%# Eval("AdminName") %>"'>更新</a></td>
</tr>
</table>
</ItemTemplate>
<HeaderTemplate>
<table id="Table2" border="0" cellpadding="0" cellspacing="0" language="javascript"οnclick="return TABLE1_onclick()" style="width: 339px">
<tr>
<td style="width: 168px; height: 19px">帐号</td>
<td style="width: 100px; height: 19px">删除</td>
<td style="width: 100px; height: 19px">更新</td>
</tr>
</table>
</HeaderTemplate>
</asp:DataList>
</td>
</tr>
<tr>
<td align="center" style="height: 19px">
<asp:LinkButton ID="lbtnFirstPage" runat="server" CommandName="firstPage" OnCommand="Pading_Command">首页</asp:LinkButton>
<asp:LinkButton ID="lbtnUpPage" runat="server" CommandName="upPage" OnCommand="Pading_Command">上一页</asp:LinkButton>
<asp:Label ID="lblPageList" runat="server"></asp:Label>
<asp:LinkButton ID="lbtnNextPage" runat="server" CommandName="nextPage" OnCommand="Pading_Command">下一页</asp:LinkButton>
<asp:LinkButton ID="lbtnLastPage" runat="server" CommandName="lastPage" OnCommand="Pading_Command">尾页</asp:LinkButton>
<asp:Label ID="lblPageTotal" runat="server"></asp:Label>
</td>
</tr>
</table>
<asp:HiddenField ID="hiddenCurrentPage" runat="server" Value="1" />
<asp:Button ID="btnClick" runat="server" OnClick="Pading_Click" Visible="False" />
</div>
</asp:Content>
这是帖子里的情况,就是此页面已经加到母版框架中!
如果只是没有 js要改成这样
<script language=javascript>
function ChangePage(i)
{
document.all.hiddenCurrentPage.value = i;
__doPostBack('btnClick','');
}
</script>
随便写了一下,希望大家多多指点...呵呵!~
我这个肯定不是最好的,也许有很大缺陷!大家有好的就推荐一下!
thank you!