aspx页面如何分页.

sky911911 2009-12-22 09:57:43
我想把后台传过来的内容 在一个ASPX页面分成几页显示 比如

上一页 下一页 之类的
...全文
451 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
狼王_ 2009-12-26
  • 打赏
  • 举报
回复
用GridView空间或用代码写个分页类

using System;
using System.Collections.Specialized;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace yournamespace
{
/// <summary>
/// 文本自动分页控件
/// </summary>
[ToolboxData("<{0}:PagerText runat=\"server\"></{0}:PagerText>")]
public class PagerText : WebControl
{

private string inputText;
/// <summary>
/// 设置或获取输入文本
/// </summary>
public string InputText
{
get { return inputText; }
set { inputText = value; }
}

/// <summary>
/// 返回输出文本
/// </summary>
public string OutputText
{
get
{

HttpRequest request = HttpContext.Current.Request;
if (String.IsNullOrEmpty(request[pageQueryKey]))//判断传递的页数是否为空,如为空则设启始页为1
{
currentPage = 1;
}
else//否则为接受页数
{
currentPage = Convert.ToInt32(request[pageQueryKey]);//将接受页数转换为Int型
}

pageCount = (int)Math.Ceiling((double)inputText.Length / pageSize);

if (currentPage > pageCount) currentPage = pageCount;
if (currentPage < pageCount)
{

return inputText.Substring((currentPage - 1) * pageSize, pageSize);
}
else
{
return inputText.Substring((currentPage - 1) * pageSize);
}
}
}

int pageCount = 1;
/// <summary>
/// 返回页面总数
/// </summary>
public int PageCount
{
get
{
return pageCount;
}

}

int currentPage = 1;
/// <summary>
/// 返回当前页
/// </summary>
public int CurrentPage
{
get
{
return currentPage; ;
}

}

private int pageSize = 500;
/// <summary>
///设置或获取每页显示大小
/// </summary>
public int PageSize
{
get { return pageSize; }
set { pageSize = value; }
}

private string pageQueryKey = "pp";

/// <summary>
/// 设置或获取查询关键字的名称
/// </summary>
public string PageQueryKey
{
get { return pageQueryKey; }
set { pageQueryKey = value; }
}

private string nextText = "下页";
/// <summary>
/// 设置或获取下一页的提示文字
/// </summary>
public string NextText
{
get { return nextText; }
set { nextText = value; }
}

private string preText = "上页";
/// <summary>
/// 设置或获取上一页的提示文字
/// </summary>
public string PreText
{
get { return preText; }
set { preText = value; }
}

private bool showPageNumber = false;

/// <summary>
/// 设置或获取是否显示分页字符
/// </summary>
public bool ShowPageNumber
{
get { return showPageNumber; }
set { showPageNumber = value; }
}

private string spaceSymbol = "  ";
/// <summary>
/// 设置或获取分页间隙符号
/// </summary>
public string SpaceSymbol
{
get { return spaceSymbol; }
set { spaceSymbol = value; }
}

/// <summary>
/// 自定义分页URL的委托
/// </summary>
/// <param name="showPageNo"></param>
/// <param name="currentPage"></param>
/// <returns></returns>
public delegate string CustomerLink(int showPageNo, int currentPage);

/// <summary>
/// 获取或设置自定义分页的方法
/// </summary>
private CustomerLink formatCustomerLink;

public CustomerLink FormatCustomerLink
{
get { return formatCustomerLink; }
set { formatCustomerLink = value; }
}

protected override void Render(HtmlTextWriter writer)
{
if (!String.IsNullOrEmpty(inputText))
{
if (pageCount == 1) return;

if (currentPage < pageCount)
{
writer.Write("<a href=\"" + FormatLink(currentPage + 1, currentPage) + "\">" + nextText + "</a>" + spaceSymbol);
}

for (int j = 1; j <= pageCount; j++)
{
if (j == currentPage)
{
// TODO:支持自定义当前页样式
// writer.Write("<a href=\"#\" class=\"action\">" + j + "</a>" + spaceSymbol);
writer.Write(j + spaceSymbol);
}
else
{
writer.Write("<a href=\"" + FormatLink(j, currentPage) + "\">" + j + "</a>" + spaceSymbol);
}

}

if (currentPage != 1)
{
writer.Write("<a href=\"" + FormatLink(currentPage - 1, currentPage) + "\">" + preText + "</a>" + spaceSymbol);
}
}

}

public virtual string FormatLink(int showPageNo, int currentPage)
{
if (FormatCustomerLink != null) return FormatCustomerLink(showPageNo, currentPage);

NameValueCollection list = new NameValueCollection(HttpContext.Current.Request.QueryString);

list.Remove(pageQueryKey);
list.Add(pageQueryKey, showPageNo.ToString());

string url = HttpContext.Current.Request.Path + "?";
for (int i = 0; i < list.Count; i++)
{
url += list.Keys[i] + "=" + HttpUtility.UrlEncode(list[i]);
if (i != list.Count - 1)
{
url += "&";
}
}
return url;
}

}
}

legu1 2009-12-23
  • 打赏
  • 举报
回复
自己写一个分页代码,或者用AspNetPager控件都可以
sky911911 2009-12-23
  • 打赏
  • 举报
回复
已经搞定啦 呵呵 代码share一下

public static string PageArticle(string Article)
{
string Output;
string ThisPage = HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"];

string PageNo;
PageNo = HttpContext.Current.Request.QueryString["Page"];

if (Article.IndexOf("pagebreak") != -1)
{
string[] Pages = Regex.Split(Article, "pagebreak");
int TotalPages = Pages.GetUpperBound(0) + 1;
int Counter = 1;
int PageNumber = 1;
if (PageNo != null)
{
PageNumber = System.Convert.ToInt32(PageNo);
}
Output = Pages[PageNumber - 1];
Output += "<p>Go to Page ";
while (Counter <= TotalPages)
{
if (Counter == PageNumber)
{
Output += Counter.ToString() + " ";
}
else
{
Output += "<a href=\"" + ThisPage + "?Page=" + Counter.ToString();
Output += "\">" + Counter.ToString() + "</a> ";
}
Counter++;
}
Output += "</p>";
}
else
{
Output = Article;
}
return Output;
}

如有不足 请大家谅解哈
Darren 2009-12-23
  • 打赏
  • 举报
回复
用分页控件,方便
sky911911 2009-12-23
  • 打赏
  • 举报
回复
ok结贴
l13873666736 2009-12-22
  • 打赏
  • 举报
回复
一般自己做
建议用SQL分页,取得一页的资料,这样页面效率比较好。
网上查一下 一条SQL搞定分页
telankes2000 2009-12-22
  • 打赏
  • 举报
回复

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private string ConnectionString = @"server=.;uid=sa;pwd=000000;database=NorthWind";
private System.Text.StringBuilder output = new StringBuilder();
private DataSet BindPageData(int CurrentPage, int PageSize, string SqlCommandText)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SYS_PageDate";
cmd.Parameters.AddWithValue("@sqlstr", SqlCommandText).SqlDbType = SqlDbType.NVarChar;
cmd.Parameters.AddWithValue("@currentpage", CurrentPage).SqlDbType = SqlDbType.Int;
cmd.Parameters.AddWithValue("@pagesize", PageSize).SqlDbType = SqlDbType.Int;

DataSet ds = new DataSet();
using (SqlDataAdapter dapter = new SqlDataAdapter(cmd))
{
dapter.Fill(ds);
}
return ds;
}
}
void SelectPager(int PageIndex, int PageCount, int TotalRecord)
{
int previous = 1;
int next = 0;
int step = 5;
int start, end;
if (PageIndex < PageCount)
{
next = PageIndex + 1;
}
else
{
PageIndex = PageCount;
previous = PageCount - 1;
next = PageCount;
}

start = 1;
end = PageIndex + step;
if (PageIndex > step)
{
start = PageIndex - step;
}
if (end > PageCount)
{
end = PageCount;
}
else
{
end = end - 1;
}
output.Append("<div class=\"selectpage\">");
if (PageIndex > start)//如果不是首页
{
previous = PageIndex - 1;
output.AppendFormat("<a href=\"{0}?page=1\">首页</a>", Request.FilePath);
output.AppendFormat("<a href=\"{0}?page={1}\">上一页</a>", Request.FilePath, previous);
}
for (int i = start; i <= end; i++)
{
if (PageIndex == i)
{
output.AppendFormat("<span class=\"selectpageindex\"> {0} </span>", i);
}
else
{
output.AppendFormat("<a href=\"{0}?page={1}\" class=\"pageindex\"> {1} </a>", Request.FilePath, i);
}
}
if (PageIndex < end)
{
output.AppendFormat("<a href=\"{0}?page={1}\">下一页</a>", Request.FilePath, next);
output.AppendFormat("<a href=\"{0}?page={1}\">尾页</a>", Request.FilePath, PageCount);
}
output.AppendFormat("当前第<font color=red>{0}</font>页 共<font color=red>{1}</font>页 <font color=red>{2}</font>条数据", PageIndex, PageCount, TotalRecord);
output.Append("</div>");
}

string ShowData(int PageIndex)
{

string Sql = @"select * from Customers";
DataSet ds = BindPageData(PageIndex, 15, Sql);
DataTable dt;
if (ds.Tables.Count == 0)
{
dt = ds.Tables[0];
}
else
{
dt = ds.Tables[2];
if (dt.Rows.Count == 0 && PageIndex > 1)//如果输入的当前页数超出总页数
{
ds = BindPageData(Convert.ToInt32(ds.Tables[1].Rows[0][0]), 15, Sql);
dt = ds.Tables[2];
}
}
dt.Columns.Remove("ROWSTAT");
SelectPager(PageIndex, Convert.ToInt32(ds.Tables[1].Rows[0][0]), Convert.ToInt32(ds.Tables[1].Rows[0][1]));
output.Append("<table class=\"tb\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" >");
output.Append("<tr class=\"tb_Header\">");
foreach (DataColumn column in dt.Columns)
{
output.Append("<td>" + column.ColumnName + "</td>");
}
output.Append("</tr>");
foreach (DataRow row in dt.Rows)
{
output.Append("<tr class=\"tb_Content\">");
for (int i = 0; i < dt.Columns.Count; i++)
{
output.Append("<td>");
output.Append(row[dt.Columns[i].ColumnName]);
output.Append("</td>");
}
output.Append("</tr>");
}
output.Append("</table>");
return output.ToString();
}
protected override void OnUnload(EventArgs e)
{
this.output = null;
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>未命名頁面</title>
<style type="text/css">
a:link
{
font-size: 9pt;
color:#3E94F1;
text-decoration: none;
}
a:visited
{
color:#000fff;
text-decoration: none;
}
a:hover
{
color: red; text-decoration: underline
}
a:active
{
text-decoration: none
}
.selectpage{font-size:9pt;color:#3E94F1;width:100%;text-align:center}
.selectpageindex{color:#fff;background-color:#3E94F1;padding:1px;width:20px;margin-right:5px}
.pageindex{border:solid 1px #ccc;padding:1px;margin-right:7px}
.tb{width:100%;border-collapse:collapse}
.tb_Header{font-size:12px;font-weight:bold;color:#3E94F1;texta-align:center}
.tb_Content{font-size:9pt;color:#3E9345}
body{margin:0px}
ul{margin:0px}
ul li{margin:0px;display:inline;}
</style>
</head>
<body>
<form id="form1" runat="server">
<%=ShowData(Request.QueryString["page"] == null ? 1 : Convert.ToInt32(Request.QueryString["page"])) %>
</form>
</body>
</html>




CREATE PROCEDURE SYS_PageDate
(
@sqlstr nvarchar(4000),
@currentpage int, --頁次
@pagesize int --行數
)
AS
set nocount on
DECLARE
@P1 int, --P1是游標的id
@rowcount int

SET @sqlstr=replace(replace(replace(replace(replace(replace(replace(replace(@sqlstr,'exec ',''),'insert ',''),'delete ',''),'update ',''),'drop ',''),'alter ',''),'chr(',''),'mid(','')

exec sp_cursoropen @P1 output ,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output

-- 頁數 行數
SELECT ceiling(1.0*@rowcount/@pagesize) AS PageCount,@rowcount AS RowCounts --as ?行?,@currentpage as
set @currentpage=(@currentpage-1)*@pagesize+1

exec sp_cursorfetch @P1,16,@currentpage,@pagesize

exec sp_cursorclose @P1

set nocount off
GO


wodeziyou111 2009-12-22
  • 打赏
  • 举报
回复
protected void DataListDataBind()
{
AccessDataSource ads = new AccessDataSource();
ads.SelectCommand = "SELECT * FROM [Topic] ORDER BY [time] DESC";
ads.DataFile = "~/Data/DataBase.mdb";
DataView dv = (DataView)ads.Select(DataSourceSelectArguments.Empty);
PagedDataSource objPage = new PagedDataSource();
objPage.DataSource = dv;
objPage.AllowPaging = true;
objPage.PageSize = 5;
int TolPage;
TolPage = objPage.PageCount;
int CurPage;
if (Request.QueryString["Page"] != null)
{
CurPage = Convert.ToInt32(Request.QueryString["Page"]);
}
else
{
CurPage = 1;
}
objPage.CurrentPageIndex = CurPage - 1;
lblCurPage.Text = "目前在第 " + CurPage.ToString() + " 页,共 " + TolPage.ToString() + " 页";
lnkFirst.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=1";
lnkLast.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + TolPage.ToString();
if (!objPage.IsFirstPage)
{
lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1);
}
else
{
//lnkPrev.Visible = false;
//lnkFirst.Visible = false;
}
if (!objPage.IsLastPage)
{
lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1);
}
else
{
//lnkNext.Visible = false;
//lnkLast.Visible = false;
}
DataList1.DataSource = objPage;
DataList1.DataBind();
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wodeziyou111/archive/2009/12/14/5003402.aspx
BaoShiqiang 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 young_programmer 的回复:]
自己写一个分页方法或者使用.net自带的 pageDataSource 类
[/Quote]顶
heerxiong 2009-12-22
  • 打赏
  • 举报
回复
yuejingtie
sky911911 2009-12-22
  • 打赏
  • 举报
回复
我的记录就是一些文字 比如我后台发布的很多的新闻内容 当然就是一条内容 文字很多
如果都放在一页 会把页面拉长 效果不好 所以我想实现类似HTML的分页
  • 打赏
  • 举报
回复
一般都是自己写的。
lymmingv 2009-12-22
  • 打赏
  • 举报
回复
学习中。。。。。
kke_007 2009-12-22
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20091221/21/9d94d53a-4caa-43e0-a532-814f8147864b.html?37699
vip__888 2009-12-22
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
自己写一个分页方法或者使用.net自带的 pageDataSource 类
kke_007 2009-12-22
  • 打赏
  • 举报
回复
BAIDU
GOOGLE
xue_bo 2009-12-22
  • 打赏
  • 举报
回复
手写分页,不过也可以用aspnetpager;我今天刚好写好了个分页,不难的,但是最好搞个通用的,这样以后就不要考虑分页这个问题了
ivws_19 2009-12-22
  • 打赏
  • 举报
回复
gridview等控件可以分页的
Specialaspnet 2009-12-22
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, EventArgs e)
{

Label1.Text = Request.Cookies["kk"].Value;

if (!Page.IsPostBack)
{
bind();
int n = Convert.ToInt16(this.Label3.Text);//总页数标签
int i;
for (i = 1; i <= n; i++)
DropDownList1.Items.Add(Convert.ToString(i));
// 下拉列表
}


}
protected void bind()
{

//取得当前页的页码
int curpage = Convert.ToInt32(this.LinkButton1.Text);//当前页,给初值
//使用PagedDataSource类实现DataList控件的分页功能
PagedDataSource ps = new PagedDataSource();
//获取数据集
DB dbc = new DB();
DataSet ds = dbc.getdatafromdb("select n_title,n_author,n_writerdate,n_id from [news] where lbid in(select lbid from newslb where lbname='" + Label1.Text + "')");
ps.DataSource = ds.Tables[0].DefaultView;
//是否可以分页
ps.AllowPaging = true;
//显示的数量
ps.PageSize = 1;
//取得当前页的页码
ps.CurrentPageIndex = curpage - 1;
this.LinkButton2.Enabled = true;
this.LinkButton3.Enabled = true;
this.LinkButton5.Enabled = true;
this.LinkButton4.Enabled = true;
if (curpage == 1)
{
//不显示第一页按钮
this.LinkButton4.Enabled = false;
//不显示上一页按钮
this.LinkButton2.Enabled = false;
}
if (curpage == ps.PageCount)
{
//不显示下一页
this.LinkButton3.Enabled = false;
//不显示最后一页
this.LinkButton5.Enabled = false;
}
//显示分页数量
this.Label3.Text = Convert.ToString(ps.PageCount);
//绑定DataList控件
this.GridView1.DataSource = ps;
// this.dlNews.DataKeyNames= "id";
this.GridView1.DataBind();
dbc.clear();

}


protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
LinkButton1.Text = DropDownList1.SelectedValue;
this.bind();
}
protected void LinkButton4_Click(object sender, EventArgs e)
{
LinkButton1.Text = "1";
this.bind();
}
protected void LinkButton5_Click(object sender, EventArgs e)
{
LinkButton1.Text =Label3.Text;
this.bind();

}
protected void LinkButton2_Click(object sender, EventArgs e)
{
LinkButton1.Text = Convert.ToString(Convert.ToInt32(this.LinkButton1.Text) - 1);
this.bind();
}
protected void LinkButton3_Click(object sender, EventArgs e)
{
LinkButton1.Text = Convert.ToString(Convert.ToInt32(this.LinkButton1.Text) + 1);
this.bind();
}
加载更多回复(1)
国际学术期刊Science/AAAS和英特尔在全球首次联袂推出第一季《架构师成长计划》以来,吸引了无数架构师踊跃参与,获得业内广泛赞誉。为持续助力架构师把握数智机遇,构建未来,第二季《架构师成长计划》全新升级,强势归来!业内顶尖架构师大咖齐聚,为架构师群体量身打造系统成长课程,带来涵盖云游戏、云原生、联邦学习、生信大数据、算力网络、云网融合等多个热门话题的前沿技术及案例实践。第一期:超视频时代 音视频架构建设与演进复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=298&tc=yxq0921l2d&frm=csdn_2第二期:转化医学研究背景下的高性能计算平台复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=311&tc=pzw21rx59o&frm=csdn_2第三期:联邦学习的研究与应用实践复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=315&tc=0e8trfvt8i&frm=csdn_2第四期:用架构思维为云原生做减法复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=316&tc=i2kgf55ggn&frm=csdn_2第五期:网络智能化技术与演进复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=322&tc=ckhvmonqvb&frm=CSDN_2第六期:异构计算 数据中心“芯”变革复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=325&tc=mzppx1h6ri&frm=csdn_2第七期:筑算力,话东西复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=327&tc=gwb7n8x79n&frm=csdn_2第八期:AI驱动的生命科学创新范式之变复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=328&tc=zircyqwy9u&frm=csdn_2第九期:软硬一体实现数据库性能优化复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=348&tc=4a46kfrb0o&frm=csdn_2第十期:AI规模化应用时代的深度学习平台构建复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=349&tc=fm9a1mrumb&frm=csdn_2

62,074

社区成员

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

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

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

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