100分散:再分享一个ASP.NET长文章分页显示函数,先到先得分
主要说明下:
1.该函数非本人原创,而是在此基础大力修改,因为原的,分页到2、3页就不能正确出来内容了;减少一些不必要的步骤;
2.CSS样式自己定;
3.个人感觉性能还是很不错的,http://www.dzswej.com/news_id692.html 可以试下
public string NoHTML(string Htmlstring) //去除HTML标记
{
//删除脚本
Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
//删除HTML
Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);
Htmlstring.Replace("<", "");
Htmlstring.Replace(">", "");
Htmlstring.Replace("\r\n", "");
Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
return Htmlstring;
}
public string OutputBySize(string p_strContent)//分页函数
{
string m_strRet = "";
int m_intPageSize = 2500;//文章每页大小
int m_intCurrentPage = 1;//设置第一页为初始页
int m_intTotalPage = 0;
int m_intArticlelength = NoHTML(p_strContent).Length;//文章长度
if (m_intPageSize < m_intArticlelength)
{//如果每页大小大于文章长度时就不用分页了
if (m_intArticlelength % m_intPageSize == 0)
{//set total pages count
m_intTotalPage = m_intArticlelength / m_intPageSize;
}
else
{//if the totalsize
m_intTotalPage = m_intArticlelength / m_intPageSize + 1;
}
if (Request.QueryString["pages"] != null)
{//set Current page number
try
{//处理不正常的地址栏的值
m_intCurrentPage = Convert.ToInt32(Request.QueryString["pages"]);
if (m_intCurrentPage > m_intTotalPage)
m_intCurrentPage = m_intTotalPage;
}
catch
{
m_intCurrentPage = m_intCurrentPage;
}
}
//set the page content 设置获取当前页的大小
if (m_intCurrentPage < m_intTotalPage)
{
m_intPageSize = m_intCurrentPage < m_intTotalPage ? m_intPageSize : (m_intArticlelength - m_intPageSize * (m_intCurrentPage - 1));
m_strRet += p_strContent.Substring(m_intPageSize * (m_intCurrentPage - 1), m_intPageSize);
}
else if(m_intCurrentPage == m_intTotalPage )
{
int mm_intPageSize=m_intArticlelength - m_intPageSize * (m_intCurrentPage - 1);
m_strRet += p_strContent.Substring(m_intArticlelength - mm_intPageSize);
}
string m_strPageInfo = "<p></p>";
for (int i = 1; i <= m_intTotalPage; i++)
{
if (i == m_intCurrentPage)
m_strPageInfo += "第" + i + "页 | ";
else
m_strPageInfo += "<a href=news_id" + Request.QueryString["wzid"] + "_pages" + i + ".html>" + i + "</a>|";
}
//输出显示各个页码
this.labPageNumber.Text = m_strPageInfo;
}
else
{
m_strRet += p_strContent;
}
return m_strRet;
}
protected void Page_Load(object sender, EventArgs e)
{
SqlDataReader dr = shuju.duquzt(Int32.Parse(Request.QueryString["wzid"]));
if (dr == null) return;
if (dr.Read())
{
this.labContent.Text = OutputBySize(dr["wzcontent"].ToString());//调用该函数
...
前台页面分页处使用的控件:<asp:Label ID="labPageNumber" Font-Size="14px" runat="server"></asp:Label>
[解决办法]
顶
[解决办法]
支持
[解决办法]
mark UP
[解决办法]
支持,感谢分享
[解决办法]
收藏了
[解决办法]
接分 学习
[解决办法]
谢谢分享
[解决办法]
不错,收藏~
[解决办法]
不错
[解决办法]
不错不错,先收藏了
[解决办法]
mark
[解决办法]
收下了
[解决办法]
支持,谢谢分享
[解决办法]
收下
------解决方案--------------------
我是来接分的
顺便顶你一个
[解决办法]
转到我空间里了,希望楼Z 别介意
[解决办法]
学习。。。顶
[解决办法]
呵呵~~学习~~
[解决办法]
up
[解决办法]
谢谢分享,收藏!
[解决办法]
JF
[解决办法]
好东西,我顶
[解决办法]
我再顶一个
[解决办法]
jfjfjf
[解决办法]
jf
[解决办法]
mark
[解决办法]
看这个吧
Asp.net实现通用以及高效的分页方法
[解决办法]
up
[解决办法]
顶
[解决办法]
修改版:
protected void Page_Load(object sender, EventArgs e)
{
string str = "两年多的坚持推动最终换来圆满的结果,民众期盼已久的成都赴台湾包机将于12月19日首度实现直航。据悉,成都市作为此次协议签署中大陆新开放的16个客运包机直航城市、8个邮件封发局之一,空运直航和直接通邮的实现,势必将翻开成都台湾两地全方位交流与合作的新篇章。成都到台湾包机直航将带来4方面的有利举措。一是有利于成都市进一步推动对台经贸工作。目前,在成都市登记注册的台资企业共有750家,投资总额22.36亿美元,居西部大城市前列,在成都常住的台商、台胞超过3000人,直航包机的开通将更有利于成都台湾的经贸合作。二是有利于加强对台交流。直航包机的开通,必将极大推进类似对台交流工作,不断扩大两岸交流领域和层次。三是有利于推动成都市灾后重建工作。未来几年,成都灾后重建项目中包含很多广大台湾同胞参与的项目,这些项目的建成和投入使用,将更加密切成都台湾联系。四是有利于西部地区旅游市场的恢复和重建。受地震影响,成都市旅游市场遭受重创,现在入境游仍在低谷徘徊。成都旅游协会赴台开展了多种形势的旅游项目推介活动。台湾旅游业界对组团来成都市旅游均持积极态度,对成都作为第二批直航包机城市表示极大的支持,随着成都台湾直航包机开通和对台旅游开放,将大大方便台湾游客来成都旅游,极大地促进成都市入境游市场的恢复。目前,关于成都到台湾包机直航首航工作,国航西南公司和四川航空公司都在积极筹备中,四川航空公司已对外公布,将于12月19日开通首航。另外,国航西南公司也计划在12月19日开通首航,并表示一旦首发时间确认,将及时对外公布。";
Label1.Text = OutputBySize(str);
}
public string OutputBySize(string p_strContent)//分页函数
{
string m_strRet = "";
int m_intPageSize = 100;//文章每页大小
int m_intCurrentPage = 1;//设置第一页为初始页
int m_intTotalPage = 0;
int m_intArticlelength = p_strContent.Length;//文章长度
if (m_intPageSize < m_intArticlelength)
{//如果每页大小大于文章长度时就不用分页了
if (m_intArticlelength % m_intPageSize == 0)
{//set total pages count
m_intTotalPage = m_intArticlelength / m_intPageSize;
}
else
{//if the totalsize
m_intTotalPage = m_intArticlelength / m_intPageSize + 1;
}
if (Request.QueryString["ps"] != null)
{//set Current page number
try
{//处理不正常的地址栏的值
m_intCurrentPage = Convert.ToInt32(Request.QueryString["ps"]);
if (m_intCurrentPage > m_intTotalPage)
m_intCurrentPage = m_intTotalPage;
}
catch
{
//m_intCurrentPage = m_intCurrentPage;
}
}
//set the page content 设置获取当前页的大小
if (m_intCurrentPage < m_intTotalPage)
{
m_intPageSize = m_intCurrentPage < m_intTotalPage ? m_intPageSize : (m_intArticlelength - m_intPageSize * (m_intCurrentPage - 1));
m_strRet += p_strContent.Substring(m_intPageSize * (m_intCurrentPage - 1), m_intPageSize);
}
else if (m_intCurrentPage == m_intTotalPage)
{
int mm_intPageSize = m_intArticlelength - m_intPageSize * (m_intCurrentPage - 1);
m_strRet += p_strContent.Substring(m_intArticlelength - mm_intPageSize);
}
string m_strPageInfo = "";
for (int i = 1; i <= m_intTotalPage; i++)
{
if (i == m_intCurrentPage)
m_strPageInfo += "[" + i + "]";
else
m_strPageInfo += " <a href=?ps=" + i + ">[" + i + "]</a> ";
}
if (m_intCurrentPage > 1)
m_strPageInfo = "<a href=?ps=" + (m_intCurrentPage - 1) + ">上一页</a>" + m_strPageInfo;
if (m_intCurrentPage < m_intTotalPage)
m_strPageInfo += "<a href=?ps=" + (m_intCurrentPage + 1) + ">下一页</a>";
//输出显示各个页码
this.ShowPageNumber.Text = "<p></p>" + m_strPageInfo;
}
else
{
m_strRet += p_strContent;
}
return m_strRet;
}
[解决办法]
前台添加:
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Label ID="ShowPageNumber" Font-Size="14px" runat="server"> </asp:Label>
[解决办法]
mark`1
[解决办法]
非常感谢,收了
转到我的blog上,没事吧
[解决办法]
。。。你好!很高兴看到了你写的文章分页代码。。你这个页面本身是不是生成静态页面的,还有我想问下这个当前页取值。。
m_intCurrentPage = Convert.ToInt32(Request.QueryString["pages"]);
这个Request.QueryString["pages"]值与
m_strPageInfo += " <a href=news_id" + Request.QueryString["wzid"] + "_pages" + i + ".html>" + i + " </a> 这个页面的传值,在html里传页数值是这样传的吗"_pages" + i.html。。。就这里不打明白。。呵。。。请指教。。。
[解决办法]
严重支持!
[解决办法]
顶,有人正在寻找哦。
[解决办法]
下来慢慢看
[解决办法]
jf
[解决办法]
JF UP
[解决办法]
yun
[解决办法]
顶一下
[解决办法]
。。。你好。。。这个页面<a href=news_id" + Request.QueryString["wzid"] + "_pages" + i + ".html>" + i + " </a> 是个不存在的页面,是怎么先进行创建的页面呢。。。点击链接就会提示出错是不存在的页面
[解决办法]
那个<a href=news_id" + Request.QueryString["wzid"] + "_pages" + i + ".html>" + i + " </a>页面是在哪里创建的呢,改了下这里的页面。。。
for (int i = 1; i <= m_intTotalPage; i++) { if (i == m_intCurrentPage) m_strPageInfo += "第" + i + "页 | "; else m_strPageInfo += " <a href=default" + ".aspx"+ "?pages="+i+" >"+ i + " </a>|"; } //输出显示各个页码
[解决办法]
up
[解决办法]
mark
[解决办法]
大家都像LZ学习
[解决办法]
顶
[解决办法]
确实不错
[解决办法]
顶下~。。
[解决办法]
mark
[解决办法]
...
[解决办法]
应该用行数来分页.
[解决办法]
顶一个
[解决办法]
JF
[解决办法]
支持,感谢分享
[解决办法]
谢谢分享
[解决办法]
up
[解决办法]
学习,收藏
[解决办法]
收藏了
[解决办法]
up
[解决办法]
up
[解决办法]