分页组件:

    /// <summary>
/// 分页组件
/// </summary>
public class PagerHelper
{
/// <summary>
/// 分页组件
/// </summary>
/// <param name="urlFmt">url格式: newsIndex_{pagenum}.shtml </param>
/// <param name="totalsize">总条数</param>
/// <param name="pagesize">每页条数</param>
/// <param name="currentPage">当前页数</param>
/// <returns>分页下标</returns>
public static RawString Pager(string urlFmt, long totalsize, long pagesize, long currentPage)
{
//urlFmt => NewsController.ashx?action=list&pagenum={pagenum}
// newsIndex_{pagenum}.shtml
long totalPageCount = (long)Math.Ceiling((totalsize * 1.0 / pagesize)); //总页数
long pagebuttom = ; //8个页标
long firstpage = Math.Max(currentPage - pagebuttom, ); //第一个页标
long endpage = Math.Min(currentPage + pagebuttom, totalPageCount); //最后一个页标 StringBuilder sb = new StringBuilder();
if(firstpage>) //如果没有遍历到首页
{
string url = urlFmt.Replace("{pagenum}","");
sb.Append("<li><a href='").Append(url).Append("'>首页</a></li>");
} for (long i = firstpage; i <= endpage; i++)
{
string url = urlFmt.Replace("{pagenum}", i.ToString());
if (i == currentPage)
{
sb.Append("<li class='active'><a>第").Append(i).Append("页</a></li>");
}
else
{
sb.Append("<li><a href='").Append(url).Append("'>第").Append(i).Append("页</a></li>");
}
} if (endpage < totalPageCount) //如果没有遍历到末页
{
string url = urlFmt.Replace("{pagenum}", totalPageCount.ToString());
sb.Append("<li><a href='").Append(url).Append("'>末页</a></li>");
}
return new RawString(sb.ToString());
}
}

新闻列表 分页 一键静态化:

 public void allNewsListStatic(HttpContext context)
{
#region 新闻列表 分页 一键静态化
AdminHelper.CheckHasPower(context, "新闻一键静态化");
string categoryidStr = context.Request["categoryid"];
int categoryid = VolidHelper.CheckStrToInt(categoryidStr);
TD_NEWSCATEGORY newscate = (TD_NEWSCATEGORY)myORM_BLL.SelectModelById(typeof(TD_NEWSCATEGORY), , categoryid);
long pagesize = ; //设置每页数量
long totalsize = myORM_BLL.SelectCountByField(typeof(TD_NEWS), , "Categoryid=" + categoryid); //总的新闻条数
long totalPageCount = (long)Math.Ceiling(totalsize * 1.0 / pagesize); //总页数
for (long i = ; i <= totalPageCount; i++) //遍历每一页
{
//对于每一页,获得该类别下的新闻集合
List<TD_NEWS> list = new NewsBLL().SelectNewsByCategoryidAndRownum(categoryid, (i - ) * pagesize + , i * pagesize);
string cshtml = RazorHelper.RazorParseHtml(context, "~/News/NewsListStatic.cshtml", new
{
categoryid = categoryid,
categoryName = newscate.NAME,
newses = list,
totalsize = totalsize,
pagesize = pagesize,
currentpage = i
});
//静态化
string pathPre = ConfigurationManager.AppSettings["ViewStaticDirecPre"]; //路径前缀
string fullPath = pathPre + categoryid + "\\newsIndex_" + i + ".shtml"; //全路径
string dir = Path.GetDirectoryName(fullPath);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
File.WriteAllText(fullPath, cshtml);
}
AdminHelper.RecordOperateLog(context, "新闻列表 一键静态化,其类别是:" + newscate.NAME);
context.Response.Redirect("/News/NewsController.ashx?action=list&categoryid=" + categoryid);
#endregion
}

NewsController.ashx

根据rownum查询的语句:

/// <summary>
/// 根据类别ID 按照NO排序 获得指定rownum之间的新闻集合
/// </summary>
/// <param name="categoryid">类别ID</param>
/// <param name="startnum">rownum起始数</param>
/// <param name="endnum">rownum结束数</param>
/// <returns>指定rownum之间的新闻集合</returns>
public List<TD_NEWS> SelectNewsByCategoryidAndRownum(long categoryid,long startnum ,long endnum)
{
string sql = @"SELECT * FROM (
SELECT ROW_NUMBER()OVER( order by NO asc) NUM,ID,NO,STATUS,CATEGORYID,CREATEBY,CREATEDATE,LASTEDITBY,LASTEDITDATE,DELETEBY,DELETEDATE,TITLE,CONTENT
FROM TD_NEWS WHERE STATUS=1 AND CATEGORYID=:CATEGORYID ) T
WHERE T.NUM>:startnum AND T.NUM<:startnum";
DataTable dt= OracleHelper.ExecuteReader(sql, new OracleParameter() { ParameterName = ":CATEGORYID", Value = categoryid },
new OracleParameter() { ParameterName = ":startnum", Value = startnum },
new OracleParameter() { ParameterName = ":startnum", Value = endnum });
List<TD_NEWS> list = new List<TD_NEWS>();
foreach(DataRow row in dt.Rows)
{
TD_NEWS news = RowToModel(row);
list.Add(news);
}
return list;
}

NewsDAL.cs

Pager分页的更多相关文章

  1. 自己写的一个Pager分页组件,WebForm,Mvc都适用

    我一说写这个功能的时候,好多人估计有疑问.分页功能网上多的是,搜一个不就行了,你这样不是浪费时间么.你说这句话的时候,我是比较信的,首先自己写一些东西是很耗时,有这些时间又能多打几盘LOL了.但是我觉 ...

  2. ThinkPHP 3.2.3 Pager分页

    不是很喜欢TP的分页类,因为生成的分页url感觉有点不好理解,例如访问路径xxxx/home/show.html,在模板输出分页后,例如产生了页码,页码链接的路径会变成xxxx/home/show/p ...

  3. JS案例之1——pager 分页

    学习JS大半年之久,第一次自己尝试写一些小插件,写法参考网上某位牛人写代码的思路. 此处代码写的是静态分页.如果需动态分页,还可以修改下.第一次写,还有很多地方可以优化.希望各位大牛踊跃拍砖. 预览图 ...

  4. pager分页框架体会

    <pg:pager> 元素的属性中: maxPageItems说的是每页偏移量是多少,这个并不是说每一页显示多少,而是第二页比第一页来说,在第一页的尾部增加多少,第一页又被覆盖多少,是决定 ...

  5. Vue Element Tabe Pager 分页方案

    表格和分页分离的,但是使用中,却是结合在一起的. 分析 有以下方式触发查询: mounted 加载数据. 查询按钮 加载数据. pager 变化加载数据 加载数据函数: loadData 问题 mou ...

  6. JAVA 分页工具类及其使用

    Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...

  7. asp.net mvc 自定义pager封装与优化

    asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自 ...

  8. asp.net mvc多条件+分页查询解决方案

    开发环境vs2010 css:bootstrap js:jquery bootstrap paginator 原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了 ...

  9. MVC下分页的自定义分页一种实现

    1.引言 在MVC开发中我们经常会对数据进行分页的展示.通过分页我们可以从服务端获取指定的数据来进行展示.这样既节约了数据库查询的时间也节约了网络传输的数据量.在MVC开发中使用的比较多的应该是MVC ...

随机推荐

  1. [Python]基于CNN的MNIST手写数字识别

    目录 一.背景介绍 1.1 卷积神经网络 1.2 深度学习框架 1.3 MNIST 数据集 二.方法和原理 2.1 部署网络模型 (1)权重初始化 (2)卷积和池化 (3)搭建卷积层1 (4)搭建卷积 ...

  2. 高通平台Bootloader启动流程【转】

    本文转载自:http://blog.csdn.net/fang_first/article/details/49615631 ====================基本知识============= ...

  3. Centos7 搭建DNS服务器与原理配置详解

    在搭建我们自己DNS服务器之前,先必须了解下DNS服务器的作用和原理. DNS是在互联网上进行域名解析到对应IP地址的服务器,保存互联网上所有的IP与域名的对应信息,然后将我们对网址的访问,解析成IP ...

  4. sql server deadlock problem

    https://www.red-gate.com/simple-talk/sql/learn-sql-server/how-to-track-down-deadlocks-using-sql-serv ...

  5. awk实现替换字符串中指定位置之间的内容

    # 显示第xx行的第yy列的一个字符sed -n 'xx,xxp' file | awk '{print substr($0,yy,1);}' # 修改第xx行的第yy列的一个字符Chr,并保存为新文 ...

  6. Codeforces 938E Max History:排列 + 逆元【考虑单个元素的贡献】

    题目链接:http://codeforces.com/problemset/problem/938/E 题意: 定义f(a): 初始时f(a) = 0, M = 1. 枚举i = 2 to n,如果a ...

  7. SQL Server 中WITH (NOLOCK)浅析(转)

    概念介绍  开发人员喜欢在SQL脚本中使用WITH(NOLOCK), WITH(NOLOCK)其实是表提示(table_hint)中的一种.它等同于 READUNCOMMITTED . 具体的功能作用 ...

  8. JS解析+预解析相关总结

    [js预解析机制]先来说说js的解析机制吧,浏览器在解析js代码时是从上到下解析的.解析顺序如:(1)预解析    找var和function (2)逐行代码解析    表达式    函数调用     ...

  9. java开发环境的搭建(JDK的下载安装及环境变量的配置)

    首先可以在Sun公司网站 http://java.sun.com 免费下载java se提供的JDK. 下载后再下载的文件夹下打开,双击jdk文件跟着提示进行安装,安装结束后——点击本机电脑的开始—— ...

  10. poj2112 最大流+floyd+二分

    题意:给一堆点,一部分是牛,一部分是机器,每头牛必须要走到一个机器,每个点之间有距离,要求每头牛都能找得到一台机器(机器有最大容量)的情况下,走的最远的牛距离最小 题解:二分答案,小于该距离的边才能加 ...