asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTest.aspx.cs" Inherits="renmai_PageTest" %>

<!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>Jquery+Ajax分页测试</title>
    <script src="../js/jquery-1.11.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            InitPage(1, 10);
            $(".nextPage").click(function () {
                InitPage($("#nextpage").val(), 10);
            });
        });
        //请求数据
        function InitPage(pageIndex, pageSize) {
            $.ajax({
                type: "POST",
                dataType: "json",
                url: '/Handler/Handler1.ashx',
                data: "type=show&random=" + Math.random() + "&pageIndex=" + pageIndex + "&pageSize=" + pageSize,
                error: function () { alert('error data'); },  //错误执行方法
                success: function (data) {
                    var json = data; //数组
                    var recordCount = json.table2[0].recordcount;
                    var html = "";
                    $.each(json.table1, function (index, item) {
                        //循环获取数据
                        var id = item.Id;
                        var name = item.Name;
                        var sex = item.Sex;
                        html += "<tr><td>" + id + "</td><td>" + name + "</td><td>" + sex + "</td></tr>";
                    });
                    $("#Result").append(html);
                    $("#nextpage").val(parseInt(pageIndex) + 1);
                }
            });
        };
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <input type="hidden" id="nextpage" value="1" />
    <table id="Result" cellspacing="0" cellpadding="0">
        <tr>
            <th style="width:50px;">
                编号
            </th>
            <th style="width:100px;">
                姓名
            </th>
            <th style="width:50px;">
                性别
            </th>
        </tr>
    </table>
    <a href="javascript:void(0)" class="nextPage">下一页</a>
    </div>
    </form>
</body>
</html>
<%@ WebHandler Language="C#" Class="Handler1" %>

using System;
using System.Web;
using System.Data;
using Newtonsoft.Json;

public class Handler1 : IHttpHandler {
    /*  Handler/Handler1.ashx */
    protected static int RecordCount = 0;
    protected static DataTable dt = CreateDT();
    public void ProcessRequest (HttpContext context) {
        string type=context.Request["type"];
        int pageIndex = MSCL.ConvertHelper.ObjectToInt(context.Request["pageIndex"]);
        int pageSize = MSCL.ConvertHelper.ObjectToInt(context.Request["pageSize"]);
        switch (type)
        {
            case "show":
                #region 分页配置
                if (pageIndex == 0) { pageIndex = 1; }
                #endregion

                DataSet ds = new DataSet();
                DataTable dtData = GetPagedTable(dt, pageIndex, pageSize);
                dtData.TableName = "table1";

                DataTable dtCount = new DataTable();
                dtCount.TableName = "table2";
                dtCount.Columns.Add("recordcount");
                dtCount.Rows.Add(dt.Rows.Count);

                ds.Tables.Add(dtData);
                ds.Tables.Add(dtCount);

                string json = JsonConvert.SerializeObject(ds, Formatting.Indented);
                context.Response.Write(json);
                break;
            default :
                break;
        }
        context.Response.End();
    }

    #region 模拟数据
    private static DataTable CreateDT()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("Id", typeof(int)) { DefaultValue = 0 });
        dt.Columns.Add(new DataColumn("Name", typeof(string)) { DefaultValue = "1" });
        dt.Columns.Add(new DataColumn("Sex", typeof(string)) { DefaultValue = "男" });
        for (int i = 1; i <= 1000; i++)
        {
            dt.Rows.Add(i, "张三" + i.ToString().PadLeft(4, '0'));
        }
        RecordCount = dt.Rows.Count;
        return dt;
    }
    #endregion 

    /// <summary>
    /// 对DataTable进行分页,起始页为1
    /// </summary>
    /// <param name="dt"></param>
    /// <param name="PageIndex"></param>
    /// <param name="PageSize"></param>
    /// <returns></returns>
    public static DataTable GetPagedTable(DataTable dt, int PageIndex, int PageSize)
    {
        if (PageIndex == 0)
            return dt;
        DataTable newdt = dt.Copy();
        newdt.Clear();
        int rowbegin = (PageIndex - 1) * PageSize;
        int rowend = PageIndex * PageSize;
        if (rowbegin >= dt.Rows.Count)
            return newdt;
        if (rowend > dt.Rows.Count)
            rowend = dt.Rows.Count;
        for (int i = rowbegin; i <= rowend - 1; i++)
        {
            DataRow newdr = newdt.NewRow();
            DataRow dr = dt.Rows[i];
            foreach (DataColumn column in dt.Columns)
            {
                newdr[column.ColumnName] = dr[column.ColumnName];
            }
            newdt.Rows.Add(newdr);
        }
        return newdt;
    }

    /// <summary>
    /// 获取总页数
    /// </summary>
    /// <param name="sumCount">结果集数量</param>
    /// <param name="pageSize">页面数量</param>
    /// <returns></returns>
    public static int getPageCount(int sumCount, int pageSize)
    {
        int page = sumCount / pageSize;
        if (sumCount % pageSize > 0)
        {
            page = page + 1;
        }
        return page;
    }    

    public bool IsReusable {
        get {
            return false;
        }
    }

}

时间: 2024-10-13 02:23:26

asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)的相关文章

jQuery+AJAX+Struts实现无刷新分页

jQuery+AJAX+Struts实现无刷新分页 说明: 1.需要jQuery插件js文件: 2.使用myeclipse添加struts能力: 从前从客户端页面向服务器发送Ajax请求,需要在js中先创建XMLHttpRequest对象,对象创建好以后使用OPEN('GET/POST',URL,同步/异步)设置提交方式,URL地址,使用同步还是异步方式.然后使用send(data)向服务器发送数据,同时使用onreadystatechange来绑定回调函数.如果是使用GET方式提交数据,那么就

ajax分页2:jquery.pagination +JSON 动态无刷新分页

aspx 页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="SqlPage.aspx.cs" Inherits="SqlPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh

本篇文章主要是对jquery+ajax+C#实现无刷新操作数据库数据的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助

我们知道同步执行和异步执行的区别,为了更好的提高用户的体验,我们都会采用异步方式去处理一些问题,毕竟单线程的同步可能回造成卡死等现象,很不友好,所以可以使用ajax来完成用户的体验,现在我们就来说说如何使用jquery的ajax来实现无刷新的获取内容 我们只是单方面的获取内容,分页等就不考虑了,后期会讲到无刷新的分页 页面中我们放置一个Div容器用来存放返回的内容 <div id="comment"><img src="images/Wait.gif&quo

Bootstrap Paginator分页插件+ajax 实现动态无刷新分页

之前做分页想过做淘宝的那个,但是因为是后台要求不高,就Bootstrap Paginator插件感觉还蛮容易上手,所以就选了它. Bootstrap Paginator分页插件下载地址: DownloadVisit Project in GitHub 1.这是需要分页的页面放的 js函数: [javascript] view plaincopy <span style="font-size:14px;">function paging(page){ $.ajax({ typ

asp.net 中使用JQuery Ajax 上传文件

首先创建一个网页,网页中添加如下代码. <h3>Upload File using Jquery AJAX in Asp.net</h3> <table> <tr> <td>File:</td> <td> <asp:FileUpload ID="fupload" runat="server" onchange='prvimg.UpdatePreview(this)' />

jQuery+AJAX实现网页无刷新上传

新年礼,提供简单.易套用的 jQuery AJAX上传示例及代码下载.后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP). 有时做一个网站项目 (不论是否 ASP.NET),内附的 FileUpload 控件,功能不足 (页面必须刷新.不支援 AJAX),或外观太丑被用户嫌弃 (却无法透过 CSS 自定义外观).网路上虽已有许多可用的示例,如: jQuery File Upload,但功能太强大.外观复杂,欲仅取出部分功能来引用,反而不易.

jquery+ajax(用ajax.dll)实现无刷新分页

利用ajax.dll那种方式的无刷新,在这就不说了,新朋友可以看下我的另一片文件http://www.cnblogs.com/dachuang/p/3654632.html 首先,这里用的是jquery自带的分页方法,所以要引用下面3个js文件 <script type="text/javascript" src="Scripts/jquery-1.8.2.min.js"></script> <script type="tex

asp.net中使用jquery ajax保存富文本的问题

前提:为了保证页面的不刷新行为,所以采用了html+jquery+handler的页面保存方式,通过ajax将富文本内容传递给一般处理程序进行操作. 一.问题:1.大文件无法上传? 2.传入handler后,提示富文本内容存在安全风险? 以上两个问题都可以通过配置web.config来解决问题: <system.web> <compilation debug="true" targetFramework="4.5"/> <httpRun

ajax实现的无刷新分页代码实例

一.html代码部分: <table class="table style-5">   <thead id="t_head">     <tr>      <th>序号</th>      <th>标题</th>      <th>地点</th>      <th>已报名</th>      <th>类别</th>