//声明一个页面数据源,用来缓存信息列表(所有的信息) PagedDataSource pds = new PagedDataSource();
public static class HtmlHelper { /// <summary> /// 创建表头html /// </summary> /// <param name="listTh">表头信息集合</param> /// <returns></returns> public static string CreateThead(List<Thead> listTh) { if (listTh != null && listTh.Count > 0) { StringBuilder sbHtml = new StringBuilder("<thead><tr>"); foreach (Thead th in listTh) { sbHtml.Append("<td "); sbHtml.Append(th.Style == null ? "" : th.Style); sbHtml.Append(">"); sbHtml.Append(th.Col == null ? "" : th.Col); sbHtml.Append("</td>"); } sbHtml.Append("</tr></thead>"); return sbHtml.Replace("'","\\'").ToString(); } return ""; } /// <summary> /// 创建分页html /// </summary> /// <returns></returns> public static string CreatePager(Pager pager) { if (pager == null) { return ""; } int pageCount = (int)(Math.Ceiling(pager.RowCount / (double)pager.PageSize)); if (pageCount > 1 || pager.HasDisplayByOnlyPage ) { StringBuilder sbHtml = new StringBuilder("<div "); sbHtml.Append(pager.PagerStyle == null ? "" : pager.PagerStyle.Replace("'","\\'")); sbHtml.Append(">"); sbHtml.Append(string.Format("<span style=\"float:left;margin-left:5px;\">当前<b><font style=\"color:red\">{0}</font>/{1}</b>页 每页<b>{2}</b>条 共<b>{3}</b>条记录</span>", pager.PageIndex, pageCount, pager.PageSize,pager.RowCount)); sbHtml.Append("<span style=\"float:right; margin-right:5px;\">"); if (pager.PageIndex == 1) { sbHtml.Append("首页 "); sbHtml.Append("上一页 "); } else { sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">首页</a> ",pager.GotoPageFun ,1)); sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">上一页</a> ",pager.GotoPageFun ,pager.PageIndex-1)); } if (pager.PageIndex < pageCount) { sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">下一页</a> ",pager.GotoPageFun ,pager.PageIndex+1)); sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">尾页</a> ",pager.GotoPageFun ,pageCount)); } else { sbHtml.Append("下一页 "); sbHtml.Append("尾页 "); } sbHtml.Append(string.Format("跳到第<select onchange=\"{0}(this.value)\">",pager.GotoPageFun)); for (int i = 1; i <= pageCount;i++ ) { sbHtml.Append(string.Format("<option value={0} {1}>{2}</option>", i, (i == pager.PageIndex ? "selected=selected" : ""), i)); } sbHtml.Append("</select>页</span ></div>"); return sbHtml.ToString(); } return ""; } } /// <summary> /// 单元格模板类 /// </summary> public class ColTemplet { private string _templet; /// <summary> /// 每列的模板 /// </summary> public string Templet { get { return _templet; } set { _templet = value; } } private string _colStyle = ""; /// <summary> /// 每列的样式 (style='width:80px' 或者 class='col' ) /// </summary> public string ColStyle { get { return _colStyle; } set { _colStyle = value; } } private List<string> _listColName; /// <summary> /// 模板列要使用的数据列集合 /// </summary> public List<string> ListColName { get { return _listColName; } set { _listColName = value; } } } /// <summary> /// 表头实体类 /// </summary> public class Thead { public Thead(string col,string style) { this._col = col; this._style = style; } private string _col; /// <summary> /// 表头显示值 /// </summary> public string Col { get { return _col; } set { _col = value; } } private string _style; /// <summary> /// 表头每列样式 如:(style='width:80px' 或者 class='thead' ) /// </summary> public string Style { get { return _style; } set { _style = value; } }
} public class Pager { private int pageIndex=1; /// <summary> /// 当前页索引 默认1 /// </summary> public int PageIndex { get { return pageIndex; } set { if (value<1) { pageIndex = 1; }else{ pageIndex = value; } } } private int pageSize=20; /// <summary> /// 每页多少条 默认20 /// </summary> public int PageSize { get { return pageSize; } set { pageSize = value; } } private int rowCount=0; /// <summary> /// 共多少行数据 默认0 /// </summary> public int RowCount { get { return rowCount; } set { rowCount = value; } } private string gotoPageFun = "gotoPage"; /// <summary> /// 跳转页面函数名 默认 ‘gotoPage’ /// </summary> public string GotoPageFun { get { return gotoPageFun; } set { gotoPageFun = value; } } private string pagerStyle = "class=\"pager\""; /// <summary> /// 分页div 样式 (style='' 或 class='' ) 默认: class="pager" /// </summary> public string PagerStyle { get { return pagerStyle; } set { pagerStyle = value; } } private bool hasDisplayByOnlyPage = true; /// <summary> /// 只有一页时,是否显示分页 默认:true 显示 /// </summary> public bool HasDisplayByOnlyPage { get { return hasDisplayByOnlyPage; } set { hasDisplayByOnlyPage = value; } } }
后台写一个返回datatabel或者返回LIST<>的都行 直接调用这个存储过程就OK了-- -------------------------------------------------------------------------------- -- Routine DDL -- -------------------------------------------------------------------------------- DELIMITER $$CREATE DEFINER=`root`@`` PROCEDURE `Employee_GetPaged`( _WhereClause VARCHAR(250), _OrderBy VARCHAR(250), _PageIndex INT, _PageSize INT, OUT _TotalCount INT ) BEGIN
SET @RowCount = 0;
SET @SqlStr = 'SELECT COUNT(EmployeeId) INTO @RowCount FROM Employee'; IF _WhereClause IS NOT NULL AND _WhereClause <> '' THEN SET @SqlStr = CONCAT(@SqlStr, ' WHERE ', _WhereClause); ELSE SET @SqlStr = CONCAT(@SqlStr, ' WHERE EmployeeId > 0'); END IF;
PREPARE StmtTotalCount FROM @SqlStr; EXECUTE StmtTotalCount; DEALLOCATE PREPARE StmtTotalCount; SET _TotalCount = @RowCount;
SET @SqlStr = 'SELECT EmployeeId, EmployeeCode, EmployeeName, EmployeeNo, EmployeeIp, Email, Password, PositionId, WorkTypeId, LanguageId, Efficiency, IsActive FROM Employee'; IF _WhereClause IS NOT NULL AND _WhereClause <> '' THEN SET @SqlStr = CONCAT(@SqlStr, ' WHERE ', _WhereClause); ELSE SET @SqlStr = CONCAT(@SqlStr, ' WHERE EmployeeId > 0'); END IF; IF _OrderBy IS NOT NULL AND _OrderBy <> '' THEN SET @SqlStr = CONCAT(@SqlStr, ' ORDER BY ', _OrderBy); END IF;
IF _PageIndex > 0 AND _PageSize > 0 THEN SET @LimitStart = (_PageIndex - 1) * _PageSize; SET @LimitEnd = _PageSize; SET @SqlStr = CONCAT(@SqlStr, ' LIMIT ', @LimitStart, ',', @LimitEnd); END IF;
PREPARE StmtRecord FROM @SqlStr; EXECUTE StmtRecord; DEALLOCATE PREPARE StmtRecord;END$$
<h2>
新闻列表</h2>
<ul>
$newscls_list$
</ul>
<div class="pager">
共$newsCount$条 当前$Count$页 $first$ $prev$ $next$ $last$
<select name="menu1" onchange="MM_jumpMenu('parent',this,0)">
$drodown$
</select>
</div>
</div>
public void toNews()
{ int PageSize = Convert.ToInt32(c.newsPager);
int Count = Convert.ToInt32(anno.ScalarAnno()) / PageSize + 1; Hashtable ht = new Hashtable(); for (int y = 0; y < Count; y++)
{
string ItemNewsCls_shtml = ToIO.Reader(onPath + "ItemViewCls.shtml");
string titel = "公告列表 - " + c.webName + " - " + c.webUrl; if (Cache["cls_list"] == null)
{
Cache["cls_list"] = T_AnnounceManager.GetAllT_Announces() as List<T_Announce>;
}
//公告列表
List<T_Announce> list = News_List(Cache["cls_list"] as List<T_Announce>, y, PageSize);
string newscls_list = "";
for (int i = 0; i < list.Count; i++)
{
newscls_list += "<li> <span>" + list[i].Updatetime + "</span> <a href=\"../view/View_" + list[i].Id + ".shtml\" target=\"_blank\">" + list[i].Title + "</a></li>";
}
ht.Add("$newscls_list$", newscls_list); string first = "";
string prev = "";
string next = "";
string last = "";
if (y == 0)
{
first = "<a>首页</a>";
}
else
{
first = "<a href='ViewCls_0.shtml' >首页</a>";
} if (y == 0)
{
prev = "<a>上一页</a>";
}
else
{
prev = "<a href='ViewCls_" + Convert.ToString(y - 1) + ".shtml' >上一页</a>";
} if (y == Count - 1)
{
next = "<a>下一页</a>";
}
else
{
next = "<a href='ViewCls_" + Convert.ToString(y + 1) + ".shtml' >下一页</a>";
} if (y == Count - 1)
{
last = "<a>末页</a>";
}
else
{
last = "<a href='ViewCls_" + Convert.ToString(Count - 1) + ".shtml' >末页</a>";
} string drodown = "";
string select;
for (int i_ = 0; i_ < Count; i_++)
{
if (i_ == y)
{
select = "selected='selected'";
}
else
{
select = "";
} drodown += "\r\n<option value=\"ViewCls_" + i_.ToString() + ".shtml\" " + select + ">" + "第" + Convert.ToString(i_ + 1) + "页" + "</option>\r\n";
} ht.Add("$newsCount$", "<font color='red'>" + Convert.ToInt32(anno.ScalarAnno()) + "</font>");
ht.Add("$Count$", "<font color='red'>" + (y + 1) + "/" + Count.ToString() + "</font>");
ht.Add("$drodown$", drodown);
ht.Add("$first$", first);
ht.Add("$prev$", prev);
ht.Add("$next$", next);
ht.Add("$last$", last);
ItemNewsCls_shtml = ToIO.Replace(ItemNewsCls_shtml, ht);
ToIO.Writer(outPath + "ViewCls_" + y + ".shtml", ItemNewsCls_shtml);
ht.Clear();
}
Cache.Remove("cls_list");
} //分页
public static List<T_Announce> News_List(List<T_Announce> vNews_List, int pageindex, int pagesize)
{
int index = pageindex * pagesize;
List<T_Announce> list = new List<T_Announce>();
for (int i = 0; i < pagesize; i++)
{
try
{
list.Add(vNews_List[index + i]);
}
catch
{
break;
}
}
return list;
}
using System.Collections.Generic;
using System.Web;
using dressmodel;
using System.Text;
using System.Text.RegularExpressions; public class PaginatedList<T> : List<T>
{
private int pagezise; public int Pagezise
{
get { return pagezise; }
set { pagezise = value; }
}
private int pageindex; public int Pageindex
{
get { return pageindex; }
set { pageindex = value; }
}
private int TotalCount; public int TotalCount1
{
get { return TotalCount; }
set { TotalCount = value; }
}
private int TotalPage; public int TotalPage1
{
get { return TotalPage; }
set { TotalPage = value; }
}
private string url; public string Url
{
get { return url; }
set { url = value; }
}
public PaginatedList(IList<T> source, int pageindex, int pagezise,int totalcount, string url)
{
this.pageindex = pageindex;
this.pagezise = pagezise;
TotalCount = totalcount;
TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);
this.AddRange(source);
this.url = url; } #region 分页属性 返回分页数据
public string GetPatePar
{
get
{
if (TotalCount1 >= 1)
{
StringBuilder str = new StringBuilder();
int startpage = (pageindex - 1) / 10 * 10 + 1;
int endpage = (pageindex - 1) / 10 * 10 + 10;
int x = endpage > TotalPage ? TotalPage : endpage;
str.Append("<div class='anpager'>"); if (HasPreviousPage)
{
str.Append("<a href=" + url + "?page=1" + GetURLParms + ">首页</a>");
str.Append("<a href=" + url + "?page=" + (pageindex - 1) + GetURLParms + ">上一页</a>");
}
else
{
str.Append("<a href=#>首页</a>");
str.Append("<a href=#>上一页</a>");
}
for (int i = startpage; i <= x; i++)
{
if (i == pageindex)
{
str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;padding:2px 4px 2px 4px;color:red;border:1px solid #cccccc;background-color:#ffffff; '>" + i + "</a>"));
}
else
{
str.Append(string.Format("<a href=" + url + "?page=" + i + GetURLParms + ">" + i + "</a>"));
}
}
if (HasNextPage)
{ str.Append("<a href=" + url + "?page=" + (pageindex + 1) + GetURLParms + ">下一页</a>");
str.Append("<a href=" + url + "?page=" + TotalPage + GetURLParms + ">尾页</a>");
}
else
{
str.Append("<a href=#>下一页</a>");
str.Append("<a href=#>尾页</a>");
}
str.Append("</div>");
return str.ToString();
}
else
{
return "<font color=red>暂无数据!</font>";
}
}
}
#endregion
/// <summary>
/// url重写
/// </summary>
private string GetURLParms
{
get
{
string query = HttpContext.Current.Request.Url.Query;
query = Regex.Replace(query, @"\?page=\d*", "", RegexOptions.Compiled);
return query;
}
}
/// <summary>
///判断是否有上一页
/// </summary>
public bool HasPreviousPage
{
get
{
return (pageindex > 1);
}
}
/// <summary>
///判断是否有下一页
/// </summary>
public bool HasNextPage
{
get
{
return (pageindex < TotalPage);
}
}
}
PagedDataSource pds = new PagedDataSource();
public static class HtmlHelper
{
/// <summary>
/// 创建表头html
/// </summary>
/// <param name="listTh">表头信息集合</param>
/// <returns></returns>
public static string CreateThead(List<Thead> listTh)
{
if (listTh != null && listTh.Count > 0)
{
StringBuilder sbHtml = new StringBuilder("<thead><tr>");
foreach (Thead th in listTh)
{
sbHtml.Append("<td ");
sbHtml.Append(th.Style == null ? "" : th.Style);
sbHtml.Append(">");
sbHtml.Append(th.Col == null ? "" : th.Col);
sbHtml.Append("</td>");
} sbHtml.Append("</tr></thead>");
return sbHtml.Replace("'","\\'").ToString();
}
return "";
} /// <summary>
/// 创建分页html
/// </summary>
/// <returns></returns>
public static string CreatePager(Pager pager)
{
if (pager == null) { return ""; }
int pageCount = (int)(Math.Ceiling(pager.RowCount / (double)pager.PageSize));
if (pageCount > 1 || pager.HasDisplayByOnlyPage )
{
StringBuilder sbHtml = new StringBuilder("<div ");
sbHtml.Append(pager.PagerStyle == null ? "" : pager.PagerStyle.Replace("'","\\'"));
sbHtml.Append(">");
sbHtml.Append(string.Format("<span style=\"float:left;margin-left:5px;\">当前<b><font style=\"color:red\">{0}</font>/{1}</b>页 每页<b>{2}</b>条 共<b>{3}</b>条记录</span>", pager.PageIndex, pageCount, pager.PageSize,pager.RowCount));
sbHtml.Append("<span style=\"float:right; margin-right:5px;\">");
if (pager.PageIndex == 1)
{
sbHtml.Append("首页 ");
sbHtml.Append("上一页 ");
}
else
{
sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">首页</a> ",pager.GotoPageFun ,1));
sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">上一页</a> ",pager.GotoPageFun ,pager.PageIndex-1));
}
if (pager.PageIndex < pageCount)
{
sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">下一页</a> ",pager.GotoPageFun ,pager.PageIndex+1));
sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">尾页</a> ",pager.GotoPageFun ,pageCount));
}
else
{
sbHtml.Append("下一页 ");
sbHtml.Append("尾页 ");
}
sbHtml.Append(string.Format("跳到第<select onchange=\"{0}(this.value)\">",pager.GotoPageFun));
for (int i = 1; i <= pageCount;i++ )
{
sbHtml.Append(string.Format("<option value={0} {1}>{2}</option>", i, (i == pager.PageIndex ? "selected=selected" : ""), i));
}
sbHtml.Append("</select>页</span ></div>");
return sbHtml.ToString();
}
return "";
}
}
/// <summary>
/// 单元格模板类
/// </summary>
public class ColTemplet
{ private string _templet; /// <summary>
/// 每列的模板
/// </summary>
public string Templet
{
get { return _templet; }
set { _templet = value; }
}
private string _colStyle = ""; /// <summary>
/// 每列的样式 (style='width:80px' 或者 class='col' )
/// </summary>
public string ColStyle
{
get { return _colStyle; }
set { _colStyle = value; }
}
private List<string> _listColName; /// <summary>
/// 模板列要使用的数据列集合
/// </summary>
public List<string> ListColName
{
get { return _listColName; }
set { _listColName = value; }
} }
/// <summary>
/// 表头实体类
/// </summary>
public class Thead
{
public Thead(string col,string style)
{
this._col = col;
this._style = style;
}
private string _col; /// <summary>
/// 表头显示值
/// </summary>
public string Col
{
get { return _col; }
set { _col = value; }
}
private string _style; /// <summary>
/// 表头每列样式 如:(style='width:80px' 或者 class='thead' )
/// </summary>
public string Style
{
get { return _style; }
set { _style = value; }
}
} public class Pager
{
private int pageIndex=1;
/// <summary>
/// 当前页索引 默认1
/// </summary>
public int PageIndex
{
get { return pageIndex; }
set {
if (value<1)
{
pageIndex = 1;
}else{
pageIndex = value;
}
}
}
private int pageSize=20;
/// <summary>
/// 每页多少条 默认20
/// </summary>
public int PageSize
{
get { return pageSize; }
set { pageSize = value; }
}
private int rowCount=0;
/// <summary>
/// 共多少行数据 默认0
/// </summary>
public int RowCount
{
get { return rowCount; }
set { rowCount = value; }
}
private string gotoPageFun = "gotoPage";
/// <summary>
/// 跳转页面函数名 默认 ‘gotoPage’
/// </summary>
public string GotoPageFun
{
get { return gotoPageFun; }
set { gotoPageFun = value; }
}
private string pagerStyle = "class=\"pager\"";
/// <summary>
/// 分页div 样式 (style='' 或 class='' ) 默认: class="pager"
/// </summary>
public string PagerStyle
{
get { return pagerStyle; }
set { pagerStyle = value; }
}
private bool hasDisplayByOnlyPage = true;
/// <summary>
/// 只有一页时,是否显示分页 默认:true 显示
/// </summary>
public bool HasDisplayByOnlyPage
{
get { return hasDisplayByOnlyPage; }
set { hasDisplayByOnlyPage = value; }
}
}
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$CREATE DEFINER=`root`@`` PROCEDURE `Employee_GetPaged`(
_WhereClause VARCHAR(250),
_OrderBy VARCHAR(250),
_PageIndex INT,
_PageSize INT,
OUT _TotalCount INT
)
BEGIN
SET @RowCount = 0;
SET @SqlStr = 'SELECT COUNT(EmployeeId) INTO @RowCount FROM Employee';
IF _WhereClause IS NOT NULL AND _WhereClause <> '' THEN
SET @SqlStr = CONCAT(@SqlStr, ' WHERE ', _WhereClause);
ELSE
SET @SqlStr = CONCAT(@SqlStr, ' WHERE EmployeeId > 0');
END IF;
PREPARE StmtTotalCount FROM @SqlStr;
EXECUTE StmtTotalCount;
DEALLOCATE PREPARE StmtTotalCount;
SET _TotalCount = @RowCount;
SET @SqlStr = 'SELECT EmployeeId, EmployeeCode, EmployeeName, EmployeeNo, EmployeeIp, Email, Password, PositionId, WorkTypeId, LanguageId, Efficiency, IsActive FROM Employee';
IF _WhereClause IS NOT NULL AND _WhereClause <> '' THEN
SET @SqlStr = CONCAT(@SqlStr, ' WHERE ', _WhereClause);
ELSE
SET @SqlStr = CONCAT(@SqlStr, ' WHERE EmployeeId > 0');
END IF;
IF _OrderBy IS NOT NULL AND _OrderBy <> '' THEN
SET @SqlStr = CONCAT(@SqlStr, ' ORDER BY ', _OrderBy);
END IF;
IF _PageIndex > 0 AND _PageSize > 0 THEN
SET @LimitStart = (_PageIndex - 1) * _PageSize;
SET @LimitEnd = _PageSize;
SET @SqlStr = CONCAT(@SqlStr, ' LIMIT ', @LimitStart, ',', @LimitEnd);
END IF;
PREPARE StmtRecord FROM @SqlStr;
EXECUTE StmtRecord;
DEALLOCATE PREPARE StmtRecord;END$$
我刚刚把我写的一个常用分页代码发布 你就发帖!真有缘纳!
给你参考下我写的!