ajax无刷新分页
来源:互联网 发布:827儿童网络暴力事件 编辑:程序博客网 时间:2024/04/26 08:11
前段时间写程序,用到了ajax的无刷新分页。我学的时候是跟“传智播客”学的,那个视频很不错。
核心流程:通过查询数据库,用“一共有多少条数据”/“每页有多少条数据”=“一共有多少页”,得到一共有多少页。这样就可以显示页码部分。
通过查询要现实的数据,得到一个datatable(查询结果),序列化后,传到客户端,就实现了商品现实部分。
现在把原理和代码分享一下:
1.需要两个SQL语句(写成存储过程更好):
(1)返回一共有多少条数据:
select count(*) from table
(2)返回第m条到第n条数据的DataTable
select top(10) * from table where id not in(
select top(20) from table where 条件 order by id desc)
and (条件) order by id desc //适用于各个版数据库
2.写一个一般处理程序,这个程序会接受ajax传来的参数,并在处理后,调用上面的两句SQL语句返回相应的值:
(1)可通过传入的参数(参数:1.要返回第几页;2.每页多少条数据;3.action),返回相应的数据DataTable或一共有多少页
(2)具体思路:a.判断action来确定返回的是(1.返回一共多少页 2.返回相应页码的DataTable)
b.通过,每页有多少条数据,一共有多少条数据,计算一共有多少页
c.通过,每页有多少条数据,需要的数据的页码,返回需要的数据
3.具体代码如下:注意用json序列化DataTable会出错,要先把DataTable变成List<>的
(1)一般处理程序.ashx
public class PagedService : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//context.Response.Write("Hello World");
productManager pM;
//检查要返回的是 商品数量 还是 商品信息列表
string action = context.Request["action"];
string tablename = context.Request["tablename"];
string type3id = context.Request["type3id"];
if (action == "getproductcount")
{
pM = new productManager();
//要返回的是 商品数量
int i = pM.GetProductCount(tablename, type3id);
context.Response.Write(i);
}
else if (action == "getpagedate")
{
pM = new productManager();
//要返回的是 商品信息列表
string selectcount = context.Request["selectcount"];
string pageindex = context.Request["pageindex"];
var data = pM.GetPageDate(tablename, type3id, selectcount, pageindex);
List<Comment> list = new List<Comment>();
for (int i = 0; i < data.Rows.Count; i++)
{
var row = data.Rows[i];
string thetype3id = data.Rows[i]["type3id"].ToString();
type3Manager t3M = new type3Manager();
string TheTableName = t3M.getTableNameByType3Id(thetype3id).Trim();
list.Add(new Comment()
{
id = row ["id"].ToString(),
productname = row["productname"].ToString(),
imagepath = row["imagepath"].ToString(),
discribe = row["discribe"].ToString(),
price = row["price"].ToString(),
TableName = TheTableName
});
}
JavaScriptSerializer jss = new JavaScriptSerializer();
context.Response.Write(jss.Serialize(list));
}
}
public class Comment
{
public string id { get; set; }
public string productname { get; set; }
public string imagepath { get; set; }
public string discribe { get; set; }
public string price { get; set; }
public string TableName { get; set; }//后加的属性,为了a标签跳转
}
public bool IsReusable
{
get
{
return false;
}
}
}
(2)前台jquery的ajax代码
$.post("../PagedService.ashx",{"action":"getpagedate","selectcount":SelectCount,
"pageindex":pageindex,"tablename":TableName,
"Type3Id":Type3Id},function(data,status){}
- ajax 无刷新分页
- ajax无刷新分页
- Ajax无刷新分页
- ajax无刷新分页
- ajax无刷新分页
- ajax无刷新分页
- ajax无刷新分页
- Ajax无刷新分页
- AJAX无刷新分页
- ajax :分页无刷新
- ajax实现分页无刷新
- DataGrid无刷新分页(Ajax)
- Ajax的无刷新分页
- AJAX实现无刷新分页
- js+ajax 无刷新分页
- JQuery+Ajax无刷新分页
- Ajax 实现无刷新分页
- ajax实现无刷新分页
- sicily 1144
- error: C2859 C1083
- 读格林斯潘回忆录-10
- Linux下库文件的创建和使用及其他
- c++ 推荐书目
- ajax无刷新分页
- java网络编程一:模拟qq聊天功能,实现一对一聊天
- 结构模式之享元模式注解
- I2S音频总线学习(四)I2S接口设计
- 多线程基础
- 【单词分类】解题报告
- getSession().createQuery(hql)带来莫名其妙的bug
- 拆箱和装箱
- SourceInsight使用技巧