急求 asp.net 分页问题 ,100分

jiameixiawanli 2010-11-24 12:14:32
求一个dataset进行后台输出html代码分页,要求不用分页控件手动分页,
...全文
277 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lek_koko 2010-11-24
  • 打赏
  • 举报
回复
写存储过程后调用...
ycproc 2010-11-24
  • 打赏
  • 举报
回复
using System;
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);
}
}
}

sunzhi523 2010-11-24
  • 打赏
  • 举报
回复
以后多多交流 哦。。。
-小蕾- 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 polarissky 的回复:]
又见求代码!!
jqgrid
[/Quote]
+1
polarissky 2010-11-24
  • 打赏
  • 举报
回复
又见求代码!!
jqgrid
遊戲王千金 2010-11-24
  • 打赏
  • 举报
回复
已经完成生成静态公告列表,分页是后台输出。供参考(注ScalarAnno()方法返回公告表的count)

<div class="newsCls">
<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;
}
Thinking-7 2010-11-24
  • 打赏
  • 举报
回复
帮顶,没明白LZ意思
why7777777 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 polarissky 的回复:]
又见求代码!!
jqgrid
[/Quote]

+1
porschev 2010-11-24
  • 打赏
  • 举报
回复
这个自己找找吧。。。。
西门喷血 2010-11-24
  • 打赏
  • 举报
回复
http://blog.csdn.net/intcry/archive/2010/11/24/6032621.aspx
我刚刚把我写的一个常用分页代码发布 你就发帖!真有缘纳!
给你参考下我写的!
wang13592578713 2010-11-24
  • 打赏
  • 举报
回复
不用分页控件,就在sql语句中分页还提高网站的访问效率!
zpr_hanyu 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sz521 的回复:]
以后多多交流 哦。。。
[/Quote]
我发现你在好几处都说这句哈
xiedan79 2010-11-24
  • 打赏
  • 举报
回复
记得HTML中有个好像叫数据岛的东东,你去查下吧
zthsn 2010-11-24
  • 打赏
  • 举报
回复
后台写一个返回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$$

hch126163 2010-11-24
  • 打赏
  • 举报
回复

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; }
}
}
Name_456 2010-11-24
  • 打赏
  • 举报
回复
//声明一个页面数据源,用来缓存信息列表(所有的信息)
PagedDataSource pds = new PagedDataSource();

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧