第一步:数据层
写一个方法GetPageList()返回该表对应的所有数据模型集合List<Model.UserInfo>
写一个方法GetRecordCount()通过SqlHelper.ExecuteScalar()获得所有的记录条数
public List<Model.UserInfo> GetPageList(int pageStart, int pageEnd)
{
string sql = "select * from (select *,ROW_NUMBER() over(order by id) as num from UserInfo) as t where t.num>=@pageStart and t.num<=@pageEnd";
SqlParameter[] pars = {
new SqlParameter("@pageStart",SqlDbType.Int){Value=pageStart},new SqlParameter("@pageEnd",SqlDbType.Int){Value=pageEnd}
};
DataTable dt = SqlHelper.GetDataTable(sql, CommandType.Text,pars);
List<Model.UserInfo> list = null;
if (dt.Rows.Count > 0)
{
list = new List<Model.UserInfo>();
Model.UserInfo userInfo = null;
foreach (DataRow row in dt.Rows)
{
userInfo = new Model.UserInfo();
LoadEntity(userInfo, row);
list.Add(userInfo);
}
}
return list;
}
public int GetRecordCount()
{
string sql = "select count(*) from UserInfo";
return Convert.ToInt32(SqlHelper.ExecuteScalar(sql, CommandType.Text));
}
第二步:业务层
写一个方法GetPageList(int pageIndex,int pageSize),通过pageIndex和pageSize计算出pageStart和pageEnd,开始页和结束页,传给数据层
写一个方法GetPageCount()通过传进了的每页显示多少条pageSize,和调用数据层GetRecordCount()方法得到的总条数,相除得到总页数
public List<Model.UserInfo> GetPageList(int pageIndex, int pageSize)
{
int pageStart = (pageIndex - 1) * pageSize + 1;
int pageEnd = pageIndex * pageSize;
return UserInfoDal.GetPageList(pageStart, pageEnd);
}
public int GetPageCount(int pageSize)
{
int pageRecord = UserInfoDal.GetRecordCount();
int pageCount = Convert.ToInt32(Math.Ceiling((double)pageRecord / pageSize));
return pageCount;
}
第三步:UI层
public ActionResult Index()
{
int pageIndex;
if (!int.TryParse(Request["pageIndex"], out pageIndex)) {
pageIndex = 1;
}
ViewBag.pageIndex = pageIndex;
int pageSize = 2;
int pageCount = UserInfoService.GetPageCount(pageSize);
ViewBag.pageCount = pageCount;
pageIndex = pageIndex < 1 ? 1 : pageIndex;
pageIndex = pageIndex > pageCount ? pageCount : pageIndex;
List<Model.UserInfo> list = UserInfoService.GetPageList(pageIndex, pageSize);
StringBuilder sb = new StringBuilder();
foreach (Model.UserInfo userInfo in list)
{
sb.AppendFormat("<li><span>{0}</span><a>{1}</a></li>",userInfo.UName,userInfo.SubTime.ToShortDateString());
}
ViewBag.UserInfoList = sb.ToString();
return View();
}
第四步:Common层 -> PageBarHelper
public class PageBarHelper
{
public static string GetPageBar(int pageIndex, int pageCount)
{
if (pageCount == 1) return string.Empty;
int startPage = pageIndex - 5;
startPage = startPage < 1 ? 1 : startPage;
int endPage = startPage + 9;
if (endPage > pageCount)
{
endPage = pageCount;
startPage = endPage - 9 < 1 ? 1 : endPage - 9;
}
StringBuilder sb = new StringBuilder();
if (pageIndex!=1)
{
sb.AppendFormat("<a href='/UserInfo/Index?pageIndex={0}'>首页</a>", 1);
}
if (pageIndex > 1)
{
sb.AppendFormat("<a href='/UserInfo/Index?pageIndex={0}'>上一页</a>", pageIndex - 1);
}
for (int i = startPage; i <= endPage; i++)
{
if (i == pageIndex)
{
sb.Append(i);
}
else
{
sb.AppendFormat("<a href='/UserInfo/Index?pageIndex={0}'>{0}</a>", i);
}
}
if (pageIndex < pageCount)
{
sb.AppendFormat("<a href='/UserInfo/Index?pageIndex={0}'>下一页</a>", pageIndex + 1);
}
if (pageIndex != pageCount)
{
sb.AppendFormat("<a href='/UserInfo/Index?pageIndex={0}'>尾页</a>", pageCount);
}
return sb.ToString();
}
}