Ajax+Jquery+Json,ASP.NET分页,存储过程分页

来源:互联网 发布:手机一键修改mac地址 编辑:程序博客网 时间:2024/05/20 16:37

新建TestAjax.aspx

后台代码:

[csharp] view plaincopy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.UI;  
  6. using System.Web.UI.WebControls;  
  7. using System.Data;//  
  8. using System.Data.SqlClient;//  
  9.   
  10. namespace AjaxTest.AjaxPage  
  11. {  
  12.     public partial class TestAjax : System.Web.UI.Page  
  13.     {  
  14.         protected void Page_Load(object sender, EventArgs e)  
  15.         {  
  16.             //获取每页要显示多少条记录  
  17.             string strPageSize = Request.QueryString["pagesize"];  
  18.             int pageSize;  
  19.             if (strPageSize == null)  
  20.             {  
  21.                 pageSize = 3;//如果没有获取到参数,则将pageSize默认显示3条记录  
  22.             }  
  23.             else  
  24.             {  
  25.                 pageSize = Convert.ToInt32(strPageSize);//将获取到的参数转换为int型  
  26.             }  
  27.   
  28.             //获取当前页数  
  29.             string strPageIndex = Request.QueryString["pageindex"];  
  30.             int pageIndex;  
  31.             if (strPageIndex == null)  
  32.             {  
  33.                 pageIndex = 1;//如果没有获取到参数,则将pageIndex默认显示第一页  
  34.             }  
  35.             else  
  36.             {  
  37.                 pageIndex = Convert.ToInt32(strPageIndex);  
  38.             }  
  39.   
  40.             //调用数据库中分页的存储过程  
  41.             SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=MyBookShop;User ID=sa;password=123");  
  42.             SqlCommand command = new SqlCommand("books_pager ", conn);//books_pager为分页的存储过程名  
  43.             command.CommandType = CommandType.StoredProcedure;//更改CommandType的类型  
  44.             conn.Open();//打开连接  
  45.             //books_pager此存储过程需要3个参数,实例化3个参数对象  
  46.             SqlParameter spPageSize = new SqlParameter("@pageSize", pageSize);//每页显示多少条记录  
  47.             SqlParameter spPageIndex = new SqlParameter("@pageIndex", pageIndex);//当前页  
  48.             SqlParameter spTotalPages = new SqlParameter("@totalPages", SqlDbType.Int);//总页数,SqlDbType.Int将数据类型转换为int型  
  49.             spTotalPages.Direction =  ParameterDirection.Output;//总页数为输出参数  
  50.   
  51.             command.Parameters.Add(spPageSize);  
  52.             command.Parameters.Add(spPageIndex);  
  53.             command.Parameters.Add(spTotalPages);  
  54.   
  55.               
  56.             SqlDataReader reader = command.ExecuteReader();  
  57.   
  58.             string content = "";//要输出的内容  
  59.             while (reader.Read())  
  60.             {  
  61.                 int id = (int)reader["bookId"];  
  62.                 string title = reader["Title"].ToString();  
  63.                 string isbn = reader["ISBN"].ToString();  
  64.                 string unitPrice = reader["UnitPrice"].ToString();  
  65.                 //以json格式输出  
  66.                 content += "{\"id\":\"" + id + "\",\"title\":\"" + title + "\",\"isbn\":\"" + isbn +"\",\"unitPrice\":\"" + unitPrice + "\"},";  
  67.             }  
  68.             string subContent = content.Substring(0,content.Length-1);//将json格式的内容最后一个逗号截掉  
  69.             conn.Close();//关闭连接  
  70.   
  71.             int totalPages = (int)spTotalPages.Value; ;//总页数【注意:需要在数据库关闭连接之后才能获取到总页数,否则会出错】  
  72.   
  73.             //以json格式输出  
  74.             Response.Write("{");  
  75.             Response.Write("\"name\":\"Books\",");  
  76.             Response.Write("\"totalpages\":\"" + totalPages + "\",");  
  77.             Response.Write("\"records\":");  
  78.             Response.Write("[");  
  79.             Response.Write(subContent);  
  80.             Response.Write("]");  
  81.             Response.Write("}");  
  82.   
  83.             Response.End();//停止输出  
  84.         }  
  85.     }  
  86. }  

新建TestAjax.htm

前台页面代码:

[html] view plaincopy
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <title>Ajax+Jquery+json分页</title>  
  5.     <style type="text/css">  
  6.         table{ border:1px solid black; border-collapse:collapse;}  
  7.         table th{ border:1px solid black;}  
  8.         table tr td{ border:1px solid black;}  
  9.     </style>  
  10.     <script src="../js/jquery-1.6.2.min.js" type="text/javascript"></script>  
  11.     <script type="text/javascript" language="javascript">  
  12.         var pageIndex = 1;//默认显示第一页  
  13.         var totalPages; //总页数  
  14.   
  15.         $(function () {  
  16.             $.ajax({  
  17.                 url: "TestAjax.aspx", //发送请求的URL地址.   
  18.                 dataType: "json", //服务器返回的数据类型  
  19.                 //每页显示3条记录,当前页是第一页,[要发送给服务器的数据,以 Key/value 的键值对形式表示,会做为QueryString附加到请求URL中]  
  20.                 data: { pagesize: 10, pageindex: pageIndex },  
  21.                 success: function (data, textStatus) {//[返回的data可以是xmlDoc,jsonObj,html,text等][textStatus请求状态:success,error等]  
  22.                     for (var i = 0; i < data.records.length; i++) {//循环输出内容  
  23.                         $("<tr><td>" + data.records[i].title + "</td><td>" + data.records[i].isbn + "</td><td>" + data.records[i].unitPrice + "</td><td>" + data.records[i].id + "</td></tr>").appendTo($("table"));  
  24.                     }  
  25.                     totalPages = window.parseInt(data.totalpages); //获取总页数  
  26.                     $("#ShotTotalPage").text("共" + totalPages + "页" + "/" + "第" + pageIndex + "页");  
  27.                 },  
  28.                 error: function (XMLHttpRequest, textStatus, errorThrown) {//XMLHttpRequest对象,错误信息,可能)捕获的错误对象  
  29.                     // 通常情况下textStatus和errorThown只有其中一个有值   
  30.                     alert("error:" + errorThrown); //弹出错误消息  
  31.                 }  
  32.             });  
  33.   
  34.             //下一页  
  35.             $("[value=下一页]").click(function () {  
  36.                 pageIndex++;  
  37.                 if (pageIndex >= totalPages) {  
  38.                     pageIndex = totalPages;  
  39.                     $(this).attr("disabled", true);  
  40.                 }  
  41.                 else {  
  42.                     $(this).attr("disabled", false);  
  43.                 }  
  44.                 if (pageIndex <= 1) {  
  45.                     pageIndex = 1;  
  46.                     $("[value=上一页]").attr("disabled", true);  
  47.                 }  
  48.                 else {  
  49.                     $("[value=上一页]").attr("disabled", false);  
  50.                 }  
  51.                   
  52.                 $.ajax({  
  53.                     url: "TestAjax.aspx", //发送请求的URL地址.   
  54.                     dataType: "json", //服务器返回的数据类型  
  55.                     //每页显示3条记录,当前页是第一页,[要发送给服务器的数据,以 Key/value 的键值对形式表示,会做为QueryString附加到请求URL中]  
  56.                     data: { pagesize: 10, pageindex: pageIndex },  
  57.                     success: function (data, textStatus) {//[返回的data可以是xmlDoc,jsonObj,html,text等][textStatus请求状态:success,error等]  
  58.                         $("table tr:gt(0)").remove();  
  59.                         for (var i = 0; i < data.records.length; i++) {//循环输出内容  
  60.                             $("<tr><td>" + data.records[i].title + "</td><td>" + data.records[i].isbn + "</td><td>" + data.records[i].unitPrice + "</td><td>" + data.records[i].id + "</td></tr>").appendTo($("table"));  
  61.                         }  
  62.                         totalPages = window.parseInt(data.totalpages); //获取总页数  
  63.                         $("#ShotTotalPage").text("共" + totalPages + "页" + "/" + "第" + pageIndex + "页");  
  64.                     },  
  65.                     error: function (XMLHttpRequest, textStatus, errorThrown) {//XMLHttpRequest对象,错误信息,可能)捕获的错误对象  
  66.                         // 通常情况下textStatus和errorThown只有其中一个有值   
  67.                         alert("error:" + errorThrown); //弹出错误消息  
  68.                     }  
  69.                 });  
  70.             });  
  71.              
  72.             //上一页  
  73.             $("[value=上一页]").click(function () {  
  74.                 pageIndex--;  
  75.                 if (pageIndex >= totalPages) {  
  76.                     pageIndex = totalPages;  
  77.                     $(this).attr("disabled", true);  
  78.                 }  
  79.                 else {  
  80.                     $(this).attr("disabled", false);  
  81.                 }  
  82.                 if (pageIndex <= 1) {  
  83.                     pageIndex = 1;  
  84.                     $("[value=上一页]").attr("disabled", true);  
  85.                 }  
  86.                 else {  
  87.                     $("[value=上一页]").attr("disabled", false);  
  88.                 }  
  89.   
  90.                 $.ajax({  
  91.                     url: "TestAjax.aspx", //发送请求的URL地址.   
  92.                     dataType: "json", //服务器返回的数据类型  
  93.                     //每页显示3条记录,当前页是第一页,[要发送给服务器的数据,以 Key/value 的键值对形式表示,会做为QueryString附加到请求URL中]  
  94.                     data: { pagesize: 10, pageindex: pageIndex },  
  95.                     success: function (data, textStatus) {//[返回的data可以是xmlDoc,jsonObj,html,text等][textStatus请求状态:success,error等]  
  96.                         $("table tr:gt(0)").remove();  
  97.                         for (var i = 0; i < data.records.length; i++) {//循环输出内容  
  98.                             $("<tr><td>" + data.records[i].title + "</td><td>" + data.records[i].isbn + "</td><td>" + data.records[i].unitPrice + "</td><td>" + data.records[i].id + "</td></tr>").appendTo($("table"));  
  99.                         }  
  100.                         totalPages = window.parseInt(data.totalpages); //获取总页数  
  101.                         $("#ShotTotalPage").text("共" + totalPages + "页" + "/" + "第" + pageIndex + "页");  
  102.                     },  
  103.                     error: function (XMLHttpRequest, textStatus, errorThrown) {//XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象  
  104.                         // 通常情况下textStatus和errorThown只有其中一个有值   
  105.                         alert("error:" + errorThrown); //弹出错误消息  
  106.                     }  
  107.                 });  
  108.             });  
  109.         });  
  110.     </script>  
  111. </head>  
  112. <body>  
  113. <div>  
  114.     <table>  
  115.         <tr>  
  116.             <th>书名</th><th>ISBN</th><th>价格</th><th>编号</th>  
  117.         </tr>  
  118.     </table>  
  119.     <p>  
  120.         <input type="button" disabled="disabled" value="上一页" />  
  121.         <input type="button"  value="下一页" />  
  122.         <label id="ShotTotalPage"></label>  
  123.     </p>  
  124. </div>  
  125. </body>  
  126. </html>  
原创粉丝点击