利用Linq + Jquery + Ajax 异步分页的实现
在Web显示的时候我们经常会遇到分页显示,而网上的分页方法甚多,但都太过于消耗带宽,所以我想到了用Ajax来分页,利用返回的Json来处理返回的数据,
大大简化了带宽的压力。
先说下思路,无非就是异步执行ajax 把新列表所需要的数据用json格式返回来,然后把原来的列表Remove掉,让新列表Show。
上前台Html代码:
<!--一个table 里面是repeater 当然了你也可以用<UL>那样效率更高-->
<table width="100%" border="0" cellpadding="0" id = "newslist" cellspacing="1" bgcolor="b5d6e6">
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<tr>
<td width="15%" height="22" background="images/bg.gif" bgcolor="#FFFFFF"><div align="center">
<a id="quan">全选</a>
<a id="fan">反选</a>
</div></td>
<td width="12%" height="22" background="images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">接收号码</span></div></td>
<td width="14%" height="22" background="images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">发送时间</span></div></td>
<td width="18%" background="images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">邮件地址</span></div></td>
<td width="23%" height="22" background="images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">内容</span></div></td>
<td width="15%" height="22" background="images/bg.gif" bgcolor="#FFFFFF" class="STYLE1"><div align="center">基本操作</div></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr class="item">
<td height="20" bgcolor="#FFFFFF"><div align="center">
<input class ="check_select" type="checkbox" name="checkbox2" title =<%#Eval("Id")%> value="checkbox" />
</div></td>
<td height="20" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1"><%#Eval("Name")%></span></div></td>
<td height="20" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">2007-11-16 15:00:20 </span></div></td>
<td bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">tiezhu0902@163.com</span></div></td>
<td height="20" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">南京科技股份有限公司…</span></div></td>
<td height="20" bgcolor="#FFFFFF"><div align="center"><span class="STYLE4"><img src="data:images/edt.gif" width="16" height="16" />编辑 <img src="data:images/del.gif" width="16" height="16" />删除</span></div></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
<!--一个table 里面是上一页,下一页,当前页面信息等等……当然了你也可以用<UL>那样效率更高-->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="STYLE4"><a id="delete" style =" cursor :hand;">批量删除</a>
</td>
<td class="STYLE4">共有<asp:Label ID="Count" runat="server" Text=""></asp:Label>条数据,
每页显示<asp:Label ID="ItemCount" runat="server" Text=""></asp:Label>条,
当前<asp:Label ID="index" runat="server" Text=""></asp:Label>
/
<asp:Label ID="PageCount" runat="server" Text=""></asp:Label>
页
</td>
<td><table border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td width="40"><img src="data:images/first.gif" class="page" title ="first" width="37" height="15" /></td>
<td width="45"><img src="data:images/back.gif" class="page" title ="back" width="43" height="15" /></td>
<td width="45"><img src="data:images/next.gif" class="page" title ="next" width="43" height="15" /></td>
<td width="40"><img src="data:images/last.gif" class="page" title ="last" width="37" height="15" /></td>
<td width="100"><div align="center"><span class="STYLE1">转到第
<asp:DropDownList ID="Drop" runat="server">
</asp:DropDownList>
页 </span></div></td>
<td width="40"><img class="page" title = "go" src="data:images/go.gif" width="37" height="15" /></td>
</tr>
</table>
</td>
</tr>
</table>
好了,初步的html页面布局已经做完了,下来我们该做页面和服务器的交互了
页面引入Jquery,为上一页,下一页,首页,尾页,增加Click事件

设置他们的Class = page 以便于给他们增加Click
$(".page").click(function () {
var type = $(this).attr("title");
var thisindex = $("#index").text(); //获取当前页码
switch (type) {
case 'first':
{
pageindex = 1;
PageIndex(1); //Ajax 回传函数
return;
}
case 'back':
{
if (thisindex == 1) {
alert("当前已经是第一页!");
}
else {
pageindex = parseInt(thisindex) - 1;
PageIndex(pageindex);
}
return;
}
case 'next':
{
if (thisindex == $("#Drop").children().length) {
alert("当前已经是最后页!");
}
else {
pageindex = parseInt(thisindex) + 1;
PageIndex(pageindex);
}
return;
}
case 'last':
{
var max = $("#Drop").children().length;
pageindex = max;
PageIndex(max);
return;
}
case 'go':
{
var _go = $("#Drop").val();
pageindex = _go;
PageIndex(_go);
return;
}
}
})
下面的代码在是Ajax的回传封装,切记在$(function(){ ....})之外
var pageindex;
function PageIndex(index) {
$.ajax({
type: "Post", //回传格式
url: "WebForm1.aspx", //回传页面
data: { "id": index }, //回传参数表示请求的是第几页
cache: false, //禁止使用浏览器缓存
//dataType: "json",
success: function (data) {
var json = eval(data); //把返回来的数据 json
var str = "";
for (var i = 0; i < json.items.length - 1; i++) {
str = str + "<tr class='item' ><td height='20' bgcolor='#FFFFFF'><div align='center'><input class ='check_select' type='checkbox' name='checkbox2' title =" + json.items[i].id.toString() + " value='checkbox' /></div></td>";
str = str + "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>" + json.items[i].name + "</span></div></td><td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>2007-11-16 15:00:20 </span></div></td>";
str = str + "<td bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>tiezhu0902@163.com</span></div></td><td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>南京科技股份有限公司…</span></div></td>";
str = str + "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE4'><img src='images/edt.gif' width='16' height='16' />编辑 <img src='images/del.gif' width='16' height='16' />删除</span></div></td></tr>";
}
$("#index").text(pageindex); //设置当前的页码
$(".item").remove(); //移除原有的列表
$("#newslist").append(str); //显示返回的列表
},
error: function () {
alert("服务错误");
}
})
}
下面才C#代码了:
void data(int id,bool b)
{
int listcount = 7; //设置页面的显示数量
LinqToSqlDataContext ds = new LinqToSqlDataContext();
var q = (from a in ds.Admin select a).Skip((id-1) * listcount).Take(listcount); //获取请求页面的列表
if (!b) //如果是页面初始加载 默认显示
{
Repeater1.DataSource = q;
DataBind();
int count = (from a in ds.Admin select a).ToList().Count;
this.Count.Text = count.ToString();
count = count / listcount + (count % listcount > 0 ? 1 : 0);
this.ItemCount.Text = listcount.ToString();
this.index.Text = "1";
this.PageCount.Text = count.ToString();
for (int i = 0; i < count; i++)
{
Drop.Items.Add((i + 1).ToString());
}
}
else
{
string str = "({items:[";
foreach (var a in q)
{
str += "{'id':'" + a.Id + "'";
str += ",'name':'" + a.Name+"'";
str += "},";
}
str += "]})";
Response.Write(str);
Response.End();
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
data(1,false);
}
PageIndex();
}
void PageIndex()
{
if (Request["id"] != null)
{
int id = int.Parse(Request["id"].ToString());
data(id,true);
}
}
好了,到此,大功告成,后续会把批量删除(批量删除后的页面变化等等加入),
利用Linq + Jquery + Ajax 异步分页的实现的更多相关文章
- 5.Hibernate实现全套增删改查和ajax异步分页
1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...
- Jquery Ajax 异步设置Table中某列的值
可根据table中某列中的ID去改变某列的值! 只是参考,实际应用中不能这样做的,如果有很多行,频繁访问服务器,服务器是顶不住的! JS: $(document).ready(function () ...
- 使用 jQuery Ajax 异步登录,并验证用户输入信息(maven)
使用 jQuery Ajax 异步登录,并验证用户输入信息(maven) 本篇内容: (1)上一篇是使用同步的请求实现登录,并由 Servlet 决定登陆后下一步做哪些事情,本篇使用 jQuery A ...
- 2018.2.28 PHP中使用jQuery+Ajax实现分页查询多功能如何操作
PHP中使用jQuery+Ajax实现分页查询多功能如何操作 1.首先做主页Ajax_pag.php 代码如下 <!DOCTYPE html> <html> <head& ...
- jquery Ajax异步请求之session
写了一个脚本,如下: $(function () { $("#btnVcode").click(function () { var receiveMobile = $(" ...
- jQuery Ajax(异步请求)
jQuery异步请求 原始的异步请求是需要创建的 XMLHttpRequest 对象.(IE5,6不支持)目前很多浏览器都支持XMLHttpRequest对象 jQuery ajax常用的回调函数:b ...
- jQuery ajax 实现分页 kkpager插件
代码片段一: <!--分页组件 JS CSS 开始--> <!--分页组件 CSS--> <link type="text/css" href=&qu ...
- jquery ajax异步调用
写程序的第一步都要知其然,至于知其所以然就要看个人的爱好了.下面说一下web开发中经常用的ajax. 这里是用的jquery框架实现的ajax异步调用.废话少说先上代码.(asp.net开发) var ...
- jquery.ajax异步发送请求的简单测试
使用ajax异步发送请求到一般处理程序,判断输入的用户名和密码 1.添加Html页面,导入jquery 2.编写js代码和页面标签 <script type="text/javascr ...
随机推荐
- SSM框架
1.http://www.cnblogs.com/verlen11/p/5349747.html 2.Mybatis http://www.cnblogs.com/xdp-gacl/p/4261895 ...
- DM9000网卡的基本工作原理
MAC:主要负责数据帧的创建,数据差错,检查,传送控制等. PHY:物理接口收发器,当收到MAC过来的数据时,它会加上校验码,然后按照物理层的规则进行数据编码,再发送到传输介质上,接收过程则相反. M ...
- spring 方法注入
package com.haut.grain.junit.test; public class Command {private Object state;public void setState( ...
- 反射 reflect 初始学习
类也是对象,本身是java.lang.Class 类的对象. Class的三种表示方式: 1.Class a = A.class: 类名.class的方式.经常在日志记录里面,获取当前类的日志记录生成 ...
- SQL注入式攻击
百度百科:http://baike.baidu.com/link?url=GQbJ2amTzTahZA7XJSBDLYYkN3waQ9JCoJ0l--tCWlvKQibe0YaH4hpmgEnLyn0 ...
- CDN 内容分发网络技术
1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...
- mac下163企业邮箱客户端的配置
一 添加账户 添加账户->添加其他邮件账户->输入电子邮件地址和密码.(全名随意起). 二 收件服务器和发件服务器的设置 收件服务器:pop.qiye.163. ...
- 戏说PHP的嵌套函数
PHP很早就支持嵌套函数了.并是不PHP5.3有闭包时才有的.然而,它却不是象JS,AS那样的闭包嵌套.即它的嵌套函数根本无闭包模式的逃脱. PHP嵌套函数有一些特别之处.最特别的是,当外部函数被调用 ...
- EF4.1之贪婪加载和延迟加载
默认情况下,EF4.1是只查询到涉及到的数据对象,但是EF4.1支持两种方法进行控制其加载: 1.贪婪加载 2.延迟加载 使用的表还是上次使用的Order 和 OrderDetails两张表来举例说明 ...
- find用法
find - 递归地在层次目录中处理文件 总 find [path...] [expression] 描 这个文档是GNU版本 find 命令的使用手册. find 搜索目录树上的每一个文件名,它从左 ...