Ajax+Asp.Net无刷新分页
1、新建解决方案,并建立四个项目BLL,DAL,Model,PagerTest,如图所示:
2、Model代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Model
{
public class Person
{
/// <summary>
/// 编号
/// </summary>
public int Id { get; set; } /// <summary>
/// 名字
/// </summary>
public string Name { get; set; }
}
}
3、DAL代码
SQlHelper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data; namespace DAL
{
public class SQlHelper
{
/// <summary>
/// 执行非查询
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">命令的文本</param>
/// <param name="commandParameters">命令的参数</param>
/// <returns>返回影响的结果集行数</returns>
public static int ExcuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString))
{
PrePareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
} /// <summary>
/// 执行非查询
/// </summary>
/// <param name="connection">数据库连接</param>
/// <param name="cmdType">命令的类型</param>
/// <param name="cmdText">命令的文本</param>
/// <param name="commandParameters">命令的参数</param>
/// <returns>返回影响的结果集行数</returns>
public static int ExcuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand(); PrePareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
} /// <summary>
/// 执行非查询
/// </summary>
/// <param name="trans">事务</param>
/// <param name="cmdType">命令的类型</param>
/// <param name="cmdText">命令的文本</param>
/// <param name="commandParameters">命令的参数</param>
/// <returns>返回影响的结果集行数</returns>
public static int ExcuteNonQuery(SqlTransaction tran, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrePareCommand(cmd, tran.Connection, tran, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
} /// <summary>
/// 执行查询
/// </summary>
/// <param name="connectionString">练级字符串</param>
/// <param name="cmdType">命令的类型</param>
/// <param name="cmdText">命令的文本</param>
/// <param name="commandParameters">命令的参数数组</param>
/// <returns>返回结果集</returns>
public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
try
{
PrePareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return sdr;
}
catch
{
conn.Close();
throw;
}
} /// <summary>
/// 执行查询
/// </summary>
/// <param name="connectionString">练级字符串</param>
/// <param name="cmdType">命令的类型</param>
/// <param name="cmdText">命令的文本</param>
/// <param name="commandParameters">命令的参数数组</param>
/// <returns>返回结果集</returns>
public static SqlDataReader ExecuteReader(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
try
{
PrePareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.Default);
cmd.Parameters.Clear();
return sdr;
}
catch
{
throw;
}
} /// <summary>
/// 读取数据
/// </summary>
/// <param name="connectionString">数据库连接字符串</param>
/// <param name="cmdType">数据命令类型</param>
/// <param name="cmdText">数据命令的文本</param>
/// <param name="cmd">需要被执行的数据命令</param>
/// <param name="commandParameters">数据命令的参数</param>
/// <returns>返回影响的结果集行数</returns>
public static SqlDataReader ExecuteReader(string connectiongStr, CommandType cmdType, string cmdText, out SqlCommand cmd, params SqlParameter[] commandParameters)
{
cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectiongStr);
try
{
PrePareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return sdr;
}
catch
{
throw;
}
} /// <summary>
/// 匹配参数
/// </summary>
/// <param name="cmd">需要被执行的数据命令</param>
/// <param name="conn">数据库连接</param>
/// <param name="trans">事务</param>
/// <param name="cmdType">数据命令类型</param>
/// <param name="cmdText">数据命令的文本</param>
/// <param name="cmdParms">数据命令的参数</param>
private static void PrePareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
} cmd.Connection = conn;
cmd.CommandText = cmdText; if (trans != null)
{
cmd.Transaction = trans;
} cmd.CommandType = cmdType; if (cmdParms != null)
{
foreach (SqlParameter param in cmdParms)
{
cmd.Parameters.Add(param);
}
}
} }
}
PersonDAL.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.ComponentModel; namespace DAL
{
public class PersonDAL
{
private static readonly string connStr = ConfigurationManager.ConnectionStrings["PagerTestConnectionString"].ToString(); /// <summary>
/// 获取总数
/// </summary>
/// <returns>返回一个总数</returns>
public int GetPersonCount()
{
int i = ;
using (SqlDataReader sdr = SQlHelper.ExecuteReader(connStr, CommandType.Text, "select * from Person", null))
{
while (sdr.Read())
{
i++;
}
sdr.Close();
return i;
}
} /// <summary>
/// 分页数据列表
/// </summary>
/// <param name="strGetFields">需要返回的列 </param>
/// <param name="fldName">排序的字段名</param>
/// <param name="PageSize">页尺寸</param>
/// <param name="PageIndex">页码</param>
/// <param name="doCount">返回记录总数, 非 0 值则返回</param>
/// <param name="OrderType">设置排序类型, 非 0 值则降序</param>
/// <param name="strWhere">查询条件 (注意: 不要加 where)</param>
/// <returns></returns>
public BindingList<Model.Person> Getlist(string strGetFields, string fldName, int PageSize, int PageIndex, int doCount, int OrderType, string strWhere)
{
SqlParameter[] parameters = {
new SqlParameter("@tblName", SqlDbType.VarChar, ),
new SqlParameter("@strGetFields", SqlDbType.VarChar, ),
new SqlParameter("@fldName", SqlDbType.VarChar, ),
new SqlParameter("@PageSize", SqlDbType.Int),
new SqlParameter("@PageIndex", SqlDbType.Int),
new SqlParameter("@doCount", SqlDbType.Bit),
new SqlParameter("@OrderType", SqlDbType.Bit),
new SqlParameter("@strWhere", SqlDbType.VarChar,),
};
parameters[].Value = "dbo.Person";
parameters[].Value = strGetFields;
parameters[].Value = fldName;
parameters[].Value = PageSize;
parameters[].Value = PageIndex;
parameters[].Value = doCount;
parameters[].Value = OrderType;
parameters[].Value = strWhere;
SqlDataReader sdr= SQlHelper.ExecuteReader(connStr, CommandType.StoredProcedure, "dbo.sp_Common_GetListByPage", parameters); BindingList<Model.Person> list = new BindingList<Model.Person>();
while (sdr.Read())
{
list.Add(createRpCcInfoByReader(sdr));
} return list;
} /// <summary>
/// 根据reader生成Person实体
/// </summary>
/// <param name="reader"></param>
/// <returns></returns>
private Model.Person createRpCcInfoByReader(SqlDataReader reader)
{
Model.Person p = new Model.Person();
p.Id = Convert.ToInt32(reader["Id"]); ;
p.Name = Convert.ToString(reader["Name"]);
return p;
}
}
}
4、BLL代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.ComponentModel; namespace BLL
{
public class PersonBLL
{
/// <summary>
/// 获取总数
/// </summary>
/// <returns>返回一个总数</returns>
public int GetPersonCount()
{
DAL.PersonDAL p = new DAL.PersonDAL();
return p.GetPersonCount();
} /// <summary>
/// 分页数据列表
/// </summary>
/// <param name="strGetFields">需要返回的列 </param>
/// <param name="fldName">排序的字段名</param>
/// <param name="PageSize">页尺寸</param>
/// <param name="PageIndex">页码</param>
/// <param name="doCount">返回记录总数, 非 0 值则返回</param>
/// <param name="OrderType">设置排序类型, 非 0 值则降序</param>
/// <param name="strWhere">查询条件 (注意: 不要加 where)</param>
/// <returns></returns>
public BindingList<Model.Person> Getlist(string strGetFields, string fldName, int PageSize, int PageIndex, int doCount, int OrderType, string strWhere)
{
DAL.PersonDAL p = new DAL.PersonDAL();
return p.Getlist(strGetFields, fldName, PageSize, PageIndex, doCount, OrderType, strWhere);
}
}
}
5、PagerTest代码,
PagerHandler.ashx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.Text; namespace PagerTest.Handler
{
/// <summary>
/// PagerHandler 的摘要说明
/// </summary>
public class PagerHandler : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain"; string str = string.Empty; //具体的页面数
int pageIndex;
int.TryParse(context.Request["pageIndex"], out pageIndex); //页面显示条数
int size = Convert.ToInt32(context.Request["pageSize"]); if (pageIndex == )
{
pageIndex = ;
} int count;
BindingList<Model.Person> list = new BLL.PersonBLL().Getlist(
"*",
"Id",
size,
pageIndex,
,
,
""
); StringBuilder sb = new StringBuilder();
foreach (Model.Person p in list)
{
sb.Append("<tr><td>");
sb.Append(p.Id.ToString());
sb.Append("</td><td>");
sb.Append(p.Name);
sb.Append("</td></tr>");
}
str = sb.ToString();
context.Response.Write(str);
} public bool IsReusable
{
get
{
return false;
}
}
}
}
PageWeb.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PageWeb.aspx.cs" Inherits="PagerTest.PageWeb" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无刷新翻页</title>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script src="Scripts/jquery.pagination.js" type="text/javascript"></script>
<link href="Style/pagination.css" rel="stylesheet" type="text/css" />
<link href="Style/tablecloth.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var pageIndex = 0; //页面索引初始值
var pageSize = 10; //每页显示条数初始化,修改显示条数,修改这里即可 $(function() {
InitTable(0); //Load事件,初始化表格数据,页面索引为0(第一页) //分页,PageCount是总条目数,这是必选参数,其它参数都是可选
$("#Pagination").pagination(<%=pageCount %>, {
callback: PageCallback,
prev_text: '上一页', //上一页按钮里text
next_text: '下一页', //下一页按钮里text
items_per_page: pageSize, //显示条数
num_display_entries: 1, //连续分页主体部分分页条目数
current_page: pageIndex, //当前页索引
num_edge_entries: 2 //两侧首尾分页条目数
}); //翻页调用
function PageCallback(index, jq) {
InitTable(index);
} //请求数据
function InitTable(pageIndex) {
$.ajax({
type: "POST",
dataType: "text",
url: 'Handler/PagerHandler.ashx', //提交到一般处理程序请求数据
data: "pageIndex=" + (pageIndex + 1) + "&pageSize=" + pageSize, //提交两个参数:pageIndex(页面索引),pageSize(显示条数)
success: function(data) {
$("#Result tr:gt(0)").remove(); //移除Id为Result的表格里的行,从第二行开始(这里根据页面布局不同页变)
$("#Result").append(data); //将返回的数据追加到表格
}
});
}
}); </script>
</head>
<body> <div align="center">
<h1>Posrchev----无刷新分页</h1>
</div>
<div id="container" >
<table id="Result" cellspacing="0" cellpadding="0">
<tr>
<th>编号</th>
<th>名称</th>
</tr>
</table>
<div id="Pagination"></div>
</div>
</body>
</html>
PageWeb.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace PagerTest
{
public partial class PageWeb : System.Web.UI.Page
{
public string pageCount = string.Empty; //总条目数 protected void Page_Load(object sender, EventArgs e)
{ if (!IsPostBack)
{
pageCount = new BLL.PersonBLL().GetPersonCount().ToString();
}
}
}
}
运行效果:
备注:本例用了jquery.pagination.js
参数名 |
描述 |
参数值 |
maxentries |
总条目数 |
必选参数,整数 |
items_per_page |
每页显示的条目数 |
可选参数,默认是10 |
num_display_entries |
连续分页主体部分显示的分页条目数 |
可选参数,默认是10 |
current_page |
当前选中的页面 |
可选参数,默认是0,表示第1页 |
num_edge_entries |
两侧显示的首尾分页的条目数 |
可选参数,默认是0 |
link_to |
分页的链接 |
字符串,可选参数,默认是"#" |
prev_text |
“前一页”分页按钮上显示的文字 |
字符串参数,可选,默认是"Prev" |
next_text |
“下一页”分页按钮上显示的文字 |
字符串参数,可选,默认是"Next" |
ellipse_text |
省略的页数用什么文字表示 |
可选字符串参数,默认是"…" |
prev_show_always |
是否显示“前一页”分页按钮 |
布尔型,可选参数,默认为true,即显示“前一页”按钮 |
next_show_always |
是否显示“下一页”分页按钮 |
布尔型,可选参数,默认为true,即显示“下一页”按钮 |
callback |
回调函数 |
当点击链接的时候此函数被调用,此函数接受两个参数,新一页的id和pagination容器(一个DOM元素)。如果回调函数返回false,则pagination事件停止执行 |
Css 代码:
pagination.css
.pagination
{
width:300px;
margin:20px 0 20px 210px;
} .pagination a
{
text-decoration:none;
border: solid 1px #AAE;
color: #15B;
} .pagination a, .pagination span
{
display: block;
float: left;
padding: 0.3em 0.5em;
margin-right: 5px;
margin-bottom: 5px;
min-width: 1em;
text-align: center;
} .pagination .current
{
background: #328aa4;
color: #fff;
border: solid 1px #AAE;
} .pagination .current.prev
{
color: #999;width:40px;
display:block;
border-color: #999;
background: #fff;
} .pagination .current.next
{
color: #999;width:40px;
display:block;
border-color: #999;
background: #fff;
}
tablecloth.css
body{
margin:;
padding:;
background:#f1f1f1;
font:70% Arial, Helvetica, sans-serif;
color:#555;
line-height:150%;
text-align:left;
} h1{
font-size:140%;
margin:0 20px;
line-height:80px;
color:White;
background-color:#328aa4;
} #container{
margin:0 auto;
width:680px;
background:#fff;
padding-bottom:50px;
}
table, td{
font:100% Arial, Helvetica, sans-serif;
}
table{width:100%;border-collapse:collapse;margin:1em 0;}
th, td{text-align:left;padding:.5em;border:1px solid #fff;}
th{background:#328aa4 url(tr_back.gif) repeat-x;color:#fff;}
td{background:#e5f1f4;} /* tablecloth styles */ tr.even td{background:#e5f1f4;}
tr.odd td{background:#f8fbfc;} th.over, tr.even th.over, tr.odd th.over{background:#4a98af;}
th.down, tr.even th.down, tr.odd th.down{background:#bce774;}
th.selected, tr.even th.selected, tr.odd th.selected{} td.over, tr.even td.over, tr.odd td.over{background:#ecfbd4;}
td.down, tr.even td.down, tr.odd td.down{background:#bce774;color:#fff;}
td.selected, tr.even td.selected, tr.odd td.selected{background:#bce774;color:#555;} /* use this if you want to apply different styleing to empty table cells*/
td.empty, tr.odd td.empty, tr.even td.empty{background:#fff;}
Ajax+Asp.Net无刷新分页的更多相关文章
- ASP.NET Ajax简单的无刷新分页
最近练习了一些AJAX无刷新分页,写得比较简单,性能不知道怎么样,求大神指点,如有更好的分页提供,欢迎交流! 发话不多说了,直接上代码! 首先从网上下了一个JS分页,感觉挺好用的 (function( ...
- jquery ajax php+mysql 无刷新分页 详细实例
最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧. 首先是html页面,index ...
- Bootstrap Paginator分页插件+ajax 实现动态无刷新分页
之前做分页想过做淘宝的那个,但是因为是后台要求不高,就Bootstrap Paginator插件感觉还蛮容易上手,所以就选了它. Bootstrap Paginator分页插件下载地址: Downlo ...
- TP2.0或3.1 或者 3.2 下使用ajax+php做无刷新分页(转+自创)
1.前言 作为一名php程序员,我们开发网站主要就是为了客户从客户端进行体验,在这里,thinkphp框架自带的分页类是每次翻页都要刷新一下整个页面,这种翻页的用户体验显然是不太理想的,我们希望每次翻 ...
- jquery+ajax(用ajax.dll)实现无刷新分页
利用ajax.dll那种方式的无刷新,在这就不说了,新朋友可以看下我的另一片文件http://www.cnblogs.com/dachuang/p/3654632.html 首先,这里用的是jquer ...
- asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTest.aspx.cs ...
- ajax实现的无刷新分页代码实例
一.html代码部分: <table class="table style-5"> <thead id="t_head"> ...
- Asp +Js 无刷新分页
Default.aspx代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=" ...
- asp.net分页asp.net无刷新分页高效率分页
项目中经常会用到分页的功能类似的项目做过无数个了,今个把自己常用的分页代码分享一下. 首先说说服务端处理的代码: 下面代码中重点是分页的sql语句的写法,其中的参数@n是当前的页码,总的来说本服务端主 ...
随机推荐
- Android应用框架浅析
http://blog.csdn.net/yanbober/article/category/3206943 Android应用层View绘制流程与源码分析 http://blog.csdn.ne ...
- 89、Android EditText 悬浮停靠
package com.willen.topFloatDemo; import android.content.Context; import android.os.Handler; import a ...
- 怎么在logcat中显示system.com.print中的打印信息
在logcat中显示信息可以用Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 1.Log.v 的调试颜色为黑色的,任何消息都会输出: 2.Log.d的输出颜色是蓝 ...
- MySQL 字符串 转 int/double CAST与CONVERT 函数的用法
http://hongmin118.iteye.com/blog/2029728 转的 MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语 ...
- Wireshark的时间格式设置
默认是自捕获开始经历的秒数,如下图: 要调整的设置步骤: step1.打开wireshark step2.选择view->Time Display Fommat step3.选择你所需要的时间格 ...
- Error Dropping Database (Can't rmdir '.test\', errno: 17)
MySql 删除数据库出错:Can't rmdir '.\test\', errno: 17 到test数据下的所在的目前data\test目录,删除掉所有的文件后,就可以删除数据了
- Codeforces 611d [DP][字符串]
/* 题意:给一个长度不超过5000的字符串,每个字符都是0到9的数字. 要求将整个字符串划分成严格递增的几个数字,并且不允许前导零. 思路: 1.很开心得发现,当我在前i个区间以后再加一个区间的时候 ...
- 使用JDBC构建简单的数据访问层
本教程的目的是使用Java编写的分离的层去访问数据库中的表,这一层通常称为数据访问层(DAL) 使用DAL的最大好处是通过直接使用一些类似insert()和find()的方法简化了数据库的访问操作,而 ...
- 菜鸟-手把手教你把Acegi应用到实际项目中(6)
在企业应用中,用户的用户名.密码和角色等信息一般存放在RDBMS(关系数据库)中.前面几节我们采用的是InMemoryDaoImpl,即基于内存的存放方式.这节我们将采用RDBMS存储用户信息. Us ...
- 05-UIKit绘图演练
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...