分页效果图:

表格下面的分页按钮样式是我自己做的一个样式,这4个按钮都是用同一张图片:这张图片是用ps做的。

接下来我们说一下怎么去做这个样式

第一css代码:

 ._HomePage,._PreviousPage,._NextPage,._TrailerPage{ width:20px; height:20px; background:url(../images/paging.gif) no-repeat; border:none; display:block;}
._HomePage:hover{ opacity:0.7;filter : alpha(opacity:70);}
._PreviousPage:hover{ opacity:0.7;filter : alpha(opacity:70);}
._NextPage:hover{ opacity:0.7;filter : alpha(opacity:70);}
._TrailerPage:hover{ opacity:0.7;filter : alpha(opacity:70);}
._HomePage{ background-position: -7px -4px;}
._PreviousPage{ background-position: -33px -4px;}
._NextPage{ background-position: -62px -4px;}
._TrailerPage{ background-position: -88px -4px;}
._Skip{ width:30px;border:none; background:#f4f4f4;border:#95b8e7 solid 1px;}
._PageSize{ border:none; background:#f4f4f4; border:#95b8e7 solid 1px;}
._Totals{ color:#00F;}

第二html代码:

 <div class="_Paging" id="_Paging">
<center>
<table class="_Layout">
<tr>
<td id="_Shop"></td>
<td><select id="RowCount" title="显示行数" onchange="ClickSelect()" >
<option value="10">10</option>
<option value="20" selected="selected">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
<option value="60">60</option>
<option value="70">70</option>
<option value="80">80</option>
<option value="90">90</option>
<option value="100">100</option>
</select>
</td>
<td>|</td>
<td><a href="javascript:;" class="_HomePage" title="首页" onclick="ShouYe()"></a></td>
<td><a href="javascript:;" class="_PreviousPage" title="上一页" onclick="ShangYiYe()"></a></td>
<td><input class="_Skip" id="txtTiaoZhuan" title="回车跳转" onkeypress="TiaoZhuan(event)" onkeyup="value=value.replace(/[^\d]/g,'')
"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" /></td>
<td>/<label id="lblZongYeShu"></label></td>
<td><a href="javascript:;" class="_NextPage" title="下一页" onclick="XiaYiYe()"></a></td>
<td><a href="javascript:;" class="_TrailerPage" title="尾页" onclick="WeiYe()"></a></td>
<td>|</td>
<td>
总记录数:<label class = "_Totals" id="lblZongJiLuShu"></label>条
</td>
</tr>
</table>
</center>
</div>
</div>

好啦,我们的样式已经做好啦!

分页的样式可以自己做啊,就算是用按钮代替也是可以的。

接下来我们去看看控制器的代码怎么写:

 /// <summary>
/// 查询与分页(如果是只只执行分页,只需PageSize和CurPage这两个参数就够了)
/// </summary>
/// <param name="strMoHu">模糊查询条件</param>
/// <param name="PageSize">页大小</param>
/// <param name="CurPage">页码</param>
/// <param name="intMenDianID">门店ID</param>
/// <returns></returns>
public ActionResult YuanGong_Load_MoHuChaXun(string strMoHu, int PageSize, int CurPage, int intMenDianID)
{
var dtYuanGongDanAn = (from tbYuanGong in myMdl.sys_YuanGong
join tbMenDian in myMdl.sys_MenDian on tbYuanGong.MenDianID equals tbMenDian.MenDianID
join tbYuanGongZhuangTai in myMdl.sys_ShuXingMingXi on tbYuanGong.YuanGongZhuangTaiID equals tbYuanGongZhuangTai.ShuXingMingXiID
where tbYuanGong.YouXiaoFou == true && tbYuanGong.MenDianID == intMenDianID && (tbYuanGong.YuanGongBianHao.Contains(strMoHu) || tbYuanGong.YuanGongXingMing.Contains(strMoHu) || tbYuanGong.XingBie.Contains(strMoHu) || tbMenDian.GongZuoZhanMingCheng.Contains(strMoHu) || tbYuanGongZhuangTai.ShuXingMingXiMingCheng.Contains(strMoHu))
orderby tbYuanGong.YuanGongID descending
select new
{
tbYuanGong.YuanGongID,
tbYuanGong.MenDianID,
tbYuanGong.YuanGongBianHao,
tbYuanGong.YuanGongXingMing,
tbYuanGong.XingBie,
tbYuanGong.YiDongShouJi,
tbYuanGong.JiaTingDianHua,
tbYuanGong.DiXin,
tbMenDian.GongZuoZhanMingCheng,
tbYuanGongZhuangTai.ShuXingMingXiID,
tbYuanGongZhuangTai.ShuXingMingXiMingCheng,
tbYuanGong.GengXinShiJian,
tbYuanGong.YouXiaoFou
}).AsEnumerable().Select((n, index) => new
{
YuanGongID = n.YuanGongID,
MenDianID = n.MenDianID,
YuanGongBianMa = n.YuanGongBianHao != null ? n.YuanGongBianHao.Trim() : "",
YuanGongXingMing = n.YuanGongXingMing != null ? n.YuanGongXingMing.Trim() : "",
XingBie = n.XingBie != null ? n.XingBie.Trim() : "",
YiDongShouJi = n.YiDongShouJi != null ? n.YiDongShouJi.Trim() : "",
JiaTingDianHua = n.JiaTingDianHua != null ? n.JiaTingDianHua.Trim() : "",
GongZi = n.DiXin != null ? n.DiXin.Trim() : "",
GongZuoDianPu = n.GongZuoZhanMingCheng != null ? n.GongZuoZhanMingCheng.Trim() : "",
YuanGongZhuangTaiID = n.ShuXingMingXiID,
YuanGongZhuangTai = n.ShuXingMingXiMingCheng != null ? n.ShuXingMingXiMingCheng.Trim() : "",
GengXingShiJian = n.GengXinShiJian != null ? n.GengXinShiJian.Value.ToString("yyyy-MM-dd HH:mm:ss") : null,
YouXiaoFou = n.YouXiaoFou,
order = index +
});
int ZongJiLuShu = dtYuanGongDanAn.Count();
if (CurPage > )//在分页前加条件判断
{ //Take是从序列的开头返回指定数量的连续元素,也就是说()里面放的数是多少就返回多少条数据
//Skip是跳过序列中指定的元素,返回剩余的,也就是说()里面放的数是多少,它就跳过多少
dtYuanGongDanAn = dtYuanGongDanAn.Take(PageSize * CurPage).Skip(PageSize * (CurPage - ));//进行分页
}
var jsonMap = new Dictionary<string, object>();//实例化容器
jsonMap.Add("total", ZongJiLuShu);//返回一共存在多少行数据
jsonMap.Add("rows", dtYuanGongDanAn);//返回分页数据
return Json(jsonMap, JsonRequestBehavior.AllowGet);
}

说白了分页就一句代码:

 //Take是从序列的开头返回指定数量的连续元素,也就是说()里面放的数是多少就返回多少条数据
//Skip是跳过序列中指定的元素,返回剩余的,也就是说()里面放的数是多少,它就跳过多少
dtYuanGongDanAn = dtYuanGongDanAn.Take(PageSize * CurPage).Skip(PageSize * (CurPage - ));//进行分页

我们再来看看刚刚写的那些控件要触发什么方法:

第一我们先要定义一个变量,这个变量表示的就是页码:

var CurPage = 1;

第二我们看看查询的方法怎么写:

  function ChaXun() {
$.getJSON("/JiChuZiLiao/YuanGong_Load_MoHuChaXun?strMoHu=" + $('#txtChaXunNeiRong').val()
+ "&" + "PageSize=" + document.getElementById('RowCount').value//获取一页显示多少行
+ "&" + "CurPage=" + CurPage
+ "&" + "intMenDianID=" + MenDianID,
function (data) {
$("#lblZongYeShu").html(function () {
if (data["rows"].length == 0) {
CurPage = 0;
$('#lblZongJiLuShu').html(0);
return 0;
}
else {
$('#lblZongJiLuShu').html(data["total"]);
return Math.ceil(data["total"] / document.getElementById('RowCount').value);
}
});
$('#txtTiaoZhuan').val(CurPage);
$('#tbYuanGongDanAn').datagrid('loadData', data);
}); }

接下来就是分页功能的代码了:

  //下一页
function XiaYiYe() {
if ($("#lblZongYeShu").html() <=CurPage) {
alert("已到最后一页");
return;
}
CurPage++;
ChaXun();
}
//上一页
function ShangYiYe() {
if (1 >= CurPage) {
alert("已到第一页");
return;
}
CurPage--;
ChaXun();
}
//首页
function ShouYe() {
if(CurPage == 1){
alert("当前页已是首页");return;
}
CurPage = 1;
ChaXun();
}
//尾页
function WeiYe() {
if (CurPage == $("#lblZongYeShu").html()){
alert("当前页已是尾页");return;
}
CurPage = $("#lblZongYeShu").html();
ChaXun();
}
//跳转
function TiaoZhuan() {
if(event.keyCode != 13){return;}
if ($("#txtTiaoZhuan").val() == "") {
alert("请输入您要跳转的页数"); return;
}
if (Number($.trim($("#txtTiaoZhuan").val())) > Number($.trim($("#lblZongYeShu").html()))) {
alert("您输入的页数大于当前总页数");
$("#txtTiaoZhuan").val('');
return;
}
if (Number($.trim($("#txtTiaoZhuan").val())) <= 0) {
alert("您输入的页数应大于零");
$("#txtTiaoZhuan").val('') ;
return;
}
CurPage = $("#txtTiaoZhuan").val();
ChaXun();
}
function ClickSelect(){
CurPage=1;
ChaXun();
}

好啦!分页就到此结束啦!

MVC linq语法分页的更多相关文章

  1. Linq语法详细

    闲言碎语 近期比较忙,但还是想写点什么,就分享一些基础的知识给大家看吧,希望能帮助一些linq新手,如果有其它疑问,可以进右上角群,进行交流探讨,谢谢. 开门见山 读这篇文章之前,我先说下,每一种搜索 ...

  2. Linq语法详细(转)

    原文地址:http://www.cnblogs.com/knowledgesea/p/3897665.html 开门见山 读这篇文章之前,我先说下,每一种搜索结果集,我都以三种方式变现出来,为啦更好的 ...

  3. Linq语法

    希望能帮助一些linq新手. 开门见山 读这篇文章之前,我先说下,每一种搜索结果集,我都以三种方式变现出来,为啦更好的理解,希望不要嫌我啰嗦. 1.简单的linq语法 //1 var ss = fro ...

  4. ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender

    (原文) 昨天在ASP.NET MVC利用PagedList分页(一)的 最后一节提到,一个好的用户体验绝对不可能是点击下一页后刷新页面,所以今天来说说利用Ajax+PagedList实现无刷新(个人 ...

  5. Lamda和Linq语法对比详细

    本人转载:http://www.cnblogs.com/knowledgesea/p/3897665.html 闲言碎语 近期比较忙,但还是想写点什么,就分享一些基础的知识给大家看吧,希望能帮助一些l ...

  6. Linq 语法举例

    1.简单的linq语法 //1 var ss = from r in db.Am_recProScheme select r; //2 var ss1 = db.Am_recProScheme; // ...

  7. Linq语法常见普通语法

    闲言碎语 近期比较忙,但还是想写点什么,就分享一些基础的知识给大家看吧,希望能帮助一些linq新手,如果有其它疑问,可以进右上角群,进行交流探讨,谢谢. 开门见山 读这篇文章之前,我先说下,每一种搜索 ...

  8. C# LINQ语法详解

    1.简单的linq语法 var ss = from r in db.Am_recProScheme select r; var ss1 = db.Am_recProScheme; string sss ...

  9. LINQ语法类似于SQL的语法

    LINQ语法类似于SQL的语法如下, Models.BookStoreEntities 是从添加新建项中的数据--->ADO.NET实体数据模型--->从数据库生成--->使用5.0 ...

随机推荐

  1. Dividing (多重背包 搜索)

    / 第一个多重背包题目 真的不理解二进制优化 /http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?cid=10594&pid=1 ...

  2. redis学习心得之二【redis主从配置】

    在前一节我们已经实践启动了一个redis服务,我们将其作为主机,现为其创建一个从机作备份使用 1.复制一份配置出来为从机所用 ~$ cp       redis/etc/redis.conf     ...

  3. mysql5.5 对触发器,函数,存储引擎,事件进行主从复制情况.(转)

       mysql5.5 对触发器,函数,存储引擎,事件进行主从复制情况. 转(http://blog.csdn.net/m582445672/article/details/7670802) 一.My ...

  4. Oracle 数据库 Database Express Edition 11g Release 2 (11.2) 错误解决集锦(使用语法)

    ORA-14552: 在查询或 DML 中无法执行 DDL, 提交或回退 PL/SQL“ORA-14551:无法在查询中执行DML操作 解决:在声明函数时加上: PRAGMA AUTONOMOUS_T ...

  5. ALS数学点滴

    其中,$n_{u_i}$表示用户$i$评分的电影数目,$n_{m_j}$表示对电影$j$评分的用户数目.设$I_i$表示用户$i$所评分的电影集合,则$n_{u_i}$是$I_i$的基数,同样的,$I ...

  6. [转] STL源码学习----lower_bound和upper_bound算法

    http://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html PS: lower_bound of value 就是最后一个 < ...

  7. android基础篇学习心得

    android技术中,线程.进程.JNI.IPC和各个小框架结构是基本功.在跟随高焕堂老师的android程序猿到架构师之路系列视频中 学习完基础篇之后,颇有些心得,记录下来. android开发就是 ...

  8. Mac下Sublime快捷键

    由于自己笔记本是mac,造成window与mac中sublime快捷键不同,现在稍微整理下常用的方便于记忆: 1.control+alt+enter 打开Emmet(Zencoding) 2.supe ...

  9. asp.net Request.ServerVariables[] 读解

    获取客户端的IP地址,代码如下: /// <summary> /// 获取客户端IP地址 /// </summary> /// <returns></retu ...

  10. (转) dedecms中自定义数据模型

    刚学习完dedecms的标签语法,我有很多困惑,觉得标签的意义比较抽象,不知道如何用标签来写一些具体的内容.如果有一些数据库的编程经验,就知道一个很常用的编程范例—增删改查.比如说,我要建立的是书本的 ...