asp.net 无刷新分页实例代码
数据类代码:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.data;
using system.data.sqlclient;
using system.collections;
using system.reflection;
namespace dal
{
public class usermanageclass
{
/// <summary>
/// 取得总页数
/// </summary>
/// <returns>总页数</returns>
public int getpagecount()
{
int counts;
string sqlstr = "select count(0) from [user]";
counts = new sqlhelper().content(sqlstr, commandtype.text);
return counts;
}
/// <summary>
/// 取出每一页的内容
/// </summary>
/// <param name="satrpage">开始页数</param>
/// <param name="endpage">结束页数</param>
/// <returns>每一页的内容</returns>
public datatable getpagedate(string satrpage, string endpage)
{
datatable dt;
string sqlstr = @"select * from
(select *, row_number() over(order by id)as no_ from [user])aa
where aa.no_ between '"+satrpage+"' and '"+endpage+"'";
dt = new sqlhelper().executequery(sqlstr, commandtype.text);
return dt;
}
/// <summary>
/// 将一个datatable转换成列表
/// </summary>
/// <typeparam name="t">实体对象的类型</typeparam>
/// <param name="dt">要转换的datatable</param>
/// <returns></returns>
public list<t> datatabletoentitylist<t>(datatable dt)
{
list<t> entiylist = new list<t>();
type entitytype = typeof(t);
propertyinfo[] entityproperties = entitytype.getproperties();
foreach (datarow row in dt.rows)
{
t entity = activator.createinstance<t>();
foreach (propertyinfo propinfo in entityproperties)
{
if (dt.columns.contains(propinfo.name))
{
if (!row.isnull(propinfo.name))
{
propinfo.setvalue(entity, row[propinfo.name], null);
}
}
}
entiylist.add(entity);
}
return entiylist;
}
}
}
pageservice.ashx.cs一般处理程序代码:
using system;
using system.collections;
using system.data;
using system.linq;
using system.web;
using system.web.services;
using system.web.services.protocols;
using system.xml.linq;
using system.data.sqlclient;
using dal;
using system.web.extensions;
using system.web.script.serialization;
using model;
using system.web.ui.mobilecontrols;
using system.collections.generic;
namespace landingsystem
{
/// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[webservice(namespace = "http://tempuri.org/")]
[webservicebinding(conformsto = wsiprofiles.basicprofile1_1)]
public class pageservice : ihttphandler
{
public void processrequest(httpcontext context)
{
context.response.contenttype = "text/plain";
string action = context.request["action"];
if (action == "getpagecount")
{
int counts = new usermanageclass().getpagecount();
int page = counts / 3;
if (counts % 3 != 0)
{
page++;
}
context.response.write(page);
}
else if (action == "getpagedata")
{
int pageno = convert.toint32(context.request["pageno"]);
string satrpage = ((pageno - 1) * 3 + 1).tostring();
string endpage = (pageno * 3).tostring();
datatable dt= new usermanageclass().getpagedate(satrpage, endpage);
ilist<registermodel> data = modelconverthelper<registermodel>.converttomodel(dt);
// ilist<registermodel> data = new usermanageclass().datatabletoentitylist<registermodel>(dt);
var p1 = data.select(c => new { c.name,c.phone});
#region 废物代码
// var p1 = data.select( c => new { c.name,c.phone});
//var p1=data.select(dr=>new {dr["name"].tostring(),dr["phone"].tostring()});
//var t_model = new list<registermodel>();
//var p3 = t_model.select(c => new { c.name, c.phone });
//var p2=data.select(c=>new {})
#endregion
javascriptserializer jss = new javascriptserializer();
context.response.write(jss.serialize(p1));
}
}
public bool isreusable
{
get
{
return false;
}
}
}
}
aspx页面代码:
<head runat="server">
<title>无标题页</title>
<script src="js/jquery-latest.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
//-----------------------------------------------------------
function getpagedata(pageno){ //取得某页数据的方法
$.post("pageservice.ashx",{"action":"getpagedata","pageno":pageno},function(data,status){
if(status=="success"){
$("#comment").empty();
var comments=$.parsejson(data); //反序列化json数据。
for(var i=0;i<comments.length;i++){
var row=comments[i];
var li= $("<li>"+row.name+" : "+row.phone+"</li>");
$("#comment").append(li); //每取出一条数据就创建一个li并append到comment/ul内。
}
}
});
}
//-------------------------------------------------------------------
getpagedata(1); //首次进入页面,看到的是第一页的数据
//----------------------------------------------------------------/
//取得所有的页数并且初始化分页按钮
$.post("pageservice.ashx",{"action":"getpagecount"},function(data,status){
if(status=="success"){
var tr1=$("<tr></tr>");
var pageno=parseint(data);
for(var i=1;i<=pageno;i++){
var td=$("<td><a href=''>"+i+"</a></td>");
tr1.append(td);
}
$("#pageno").append(tr1);
$("#pageno a").click(function(e){ //页码创建后,就为每一个页码监听一个click事件。
e.preventdefault(); //取消a的默认跳转行为
getpagedata($(this).html()); //点击后就去执行取页数据的操作。
});
}
});
//----------------------------------------------------------------------------
});
</script>
</head>
<body>
<table>
<tr>
<td>
<ul id="comment"></ul>
</td>
</tr>
</table>
<br />
页数:
<table id="pageno"></table>
</body>
</html>
modelconverthelper.cs(将datatable转换为list通用类)代码:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.collections;
using system.data;
using system.reflection;
namespace dal
{
public class modelconverthelper<t> where t : new ()
{
public static ilist<t> converttomodel(datatable dt)
{
ilist<t> ts = new list<t>();
type type=typeof(t);
string tempname = "";
foreach (datarow dr in dt.rows)
{
t t = new t();
// 获得此模型的公共属性
propertyinfo[] propertys = t.gettype().getproperties();
foreach (propertyinfo pi in propertys)
{
tempname = pi.name;
// 检查datatable是否包含此列
if (dt.columns.contains(tempname))
{
// 判断此属性是否有setter
if (!pi.canread) continue;
object value = dr[tempname];
if (value != dbnull.value)
if (pi.propertytype == typeof(int))
{
pi.setvalue(t, convert.toint32(value), null);
}
else if (pi.propertytype == typeof(string))
{
pi.setvalue(t, value.tostring(), null);
}
//pi.setvalue(t, value, null);
}
}
ts.add(t);
}
return ts;
}
}
}
推荐阅读
-
asp.net中gridview的查询、分页、编辑更新、删除的实例代码
-
AspNetPager+GridView实现分页的实例代码
-
asp.net 无刷新分页实例代码
-
ajax.net +jquery 无刷新三级联动的实例代码
-
Asp.net 2.0 无刷新图片上传 显示缩略图 具体实现
-
ASP.Net邮箱发邮件实例代码
-
asp.net上传图片并作处理水印与缩略图的实例代码
-
asp.net Repeater分页实例(PageDataSource的使用)
-
Asp.net中使用PageDataSource分页实现代码
-
asp.net中使用repeater和PageDataSource搭配实现分页代码