• Ajax无刷新分页


    前台代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxPage.aspx.cs" Inherits="XML操作.AjaxPage" %>
    
    <!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="jquery-3.2-vsdoc2.js" type="text/javascript"></script>
        <script src="jquery.pagination.js" type="text/javascript"></script>
        <link href="pagination.css" rel="stylesheet" type="text/css" />
        <script language="javascript" type="text/javascript">
        var pageIndex = 0;     //页面索引初始值   
             var pageSize = 15;    //每页显示条数初始化,修改显示条数,修改这里即可   
             $(function () {
                  InitTable(0);    //Load事件,初始化表格数据,页面索引为0(第一页)
                    //分页,PageCount是总条目数,这是必选参数,其它参数都是可选
                    $("#Pagination").pagination(<%=pcount%>, {
                        callback: PageCallback,  //PageCallback() 为翻页调用次函数。
                           prev_text: "« 上一页",
                        next_text: "下一页 »",
                        items_per_page:pageSize,
                        num_edge_entries: 2,       //两侧首尾分页条目数
                           num_display_entries: 6,    //连续分页主体部分分页条目数
                           current_page: pageIndex,   //当前页索引
                    });
                    //翻页调用   
                    function PageCallback(index, jq) {             
                        InitTable(index);  
                    }  
                    //请求数据   
                    function InitTable(pageIndex) {                                  
                        $.ajax({   
                            type: "POST",  
                            dataType: "text",  
                            url: 'AjaxPage.ashx',      //提交到一般处理程序请求数据   
                            data: "pageIndex=" + (pageIndex) + "&pageSize=" + pageSize,          //提交两个参数:pageIndex(页面索引),pageSize(显示条数)                   
                            success: function(data) {
                                $("#Result tr:gt(0)").remove();        //移除Id为Result的表格里的行,从第二行开始(这里根据页面布局不同页变)   
                                $("#Result").append(data);             //将返回的数据追加到表格   
                            }  
                        }); 
                    }
                });
    
        
        </script>
    </head>
    
    <body>
        <form id="form1" runat="server">
            <table id="Result" cellspacing="0" cellpadding="0">            
                    <tr>  
                        <th>商品编号</th>
                        <th>商品名称</th>
                    </tr>                                                                                               
            </table>  
            <div id="Pagination" class="right flickr"></div>
    <%--        分页使用的样式(可选)
            <div id="Pagination" class="meneame"></div> 
            <div id="Pagination" class="black"></div>
            <div id="Pagination" class="quotes"></div> 
            <div id="Pagination" class="scott"></div> --%>
        </form>
    </body>
    </html>

    后台代码:

    protected string pcount=string.Empty;           //总条数
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    pcount = SQLHelper.GetDataSet("select count(*) from K_SysModuleNode").Rows[0][0].ToString();
                }
            }

    Ajax处理程序:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Text;
    using KingTop.Common;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    using System.Web.Script.Serialization;
    
    namespace XML操作
    {
        /// <summary>
        /// AjaxPage1 的摘要说明
        /// </summary>
        public class AjaxPage1 : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                String str = string.Empty;
    
                if (context.Request["pageIndex"] != null && context.Request["pageIndex"].ToString().Length > 0)
                {
                    int pageIndex;   //具体的页面数
                    int.TryParse(context.Request["pageIndex"], out pageIndex);
                    if (context.Request["pageSize"] != null && context.Request["pageSize"].ToString().Length > 0)
                    {
                        //页面显示条数   
                        string pageSize = context.Request["pageSize"].ToString();
                        string data = BindSource(pageSize,pageIndex.ToString());
                        context.Response.Write(data);
                        context.Response.End();
                    }
                }
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
    
    
            #region 绑定
            /// <summary>
            /// 剧院之窗列表
            /// </summary>
            private string BindSource(string pageSize, string pageIndex)
            {
                string sql = string.Format("select NodeID,NodeCode,NodeName from K_SysModuleNode");
                int pagesize = int.Parse(pageSize);
                int pageindex = int.Parse(pageIndex)+1;
    
                string order = " NodeCode desc ";
                SqlParameter[] sqlparam = new SqlParameter[] {
                new SqlParameter("@NewPageIndex",pageindex),
                new SqlParameter("@PageSize",pagesize),
                new SqlParameter("@order",order),
                new SqlParameter("@strSql",sql)
                };
                StringBuilder text = new StringBuilder();
                DataSet ds = SQLHelper.ExecuteDataSet(SQLHelper.ConnectionStringLocalTransaction, 
    CommandType.StoredProcedure, "proc_Pager", sqlparam); if (ds != null && ds.Tables.Count > 0) { foreach (DataRow row in ds.Tables[1].Rows) { text.Append("<tr><td>"); text.Append(row["NodeID"]); text.Append("</td><td>"); text.Append(row["NodeCode"]); text.Append("</td><td>"); text.Append(row["NodeName"]); text.Append("</td></tr>"); } } return text.ToString(); } } #endregion }

    所使用的方法:

     /// <summary>
            /// 分页存储过程
            /// </summary>
            /// <param name="connectionString">连接语句</param>
            /// <param name="cmdType">sql语句类型</param>
            /// <param name="cmdText">存储过程名称</param>
            /// <param name="commandParameters">参数名</param>
            /// <returns></returns>
            public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                SqlCommand cmd = new SqlCommand();
                SqlConnection conn = new SqlConnection(connectionString);
                DataSet ds = new DataSet();
                try
                {
                    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(ds);
                    return ds;
                }
                catch
                {
                    conn.Close();
                    throw;
                }
                finally
                {
                    conn.Close();
                }
            }
     /// <summary>
            /// Prepare a command for execution
            /// </summary>
            /// <param name="cmd">SqlCommand object</param>
            /// <param name="conn">SqlConnection object</param>
            /// <param name="trans">SqlTransaction object</param>
            /// <param name="cmdType">Cmd type e.g. stored procedure or text</param>
            /// <param name="cmdText">Command text, e.g. Select * from Products</param>
            /// <param name="cmdParms">SqlParameters to use in the command</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 parm in cmdParms)
                        cmd.Parameters.Add(parm);
                }
            }

    分页存储过程:

    ALTER PROC [dbo].[proc_Pager]
    @NewPageIndex int,--当前页码
    @PageSize int,--分页条数
    @order varchar(64),
    @strSql nvarchar(max) --sql语句
    as
    DECLARE @str varchar(8000)
    BEGIN
        SET @str = 'SELECT COUNT(1) FROM ('+@strSql+')T' 
        SET @str = @str+' SELECT * FROM (SELECT row_number() over(order by '+@order+') as Rownum,* FROM('+@strSql+')T1)T '
    END
    SET @str=@str+' where Rownum between '+cast((@NewPageIndex-1)*@PageSize+1 as varchar(20))+' and '+cast(@NewPageIndex*@PageSize as varchar(20))     
    --IF LEN(@order)<>0
        --SET @str=@str+' order by '+@order
    EXEC(@str)
  • 相关阅读:
    centos7.5部署mysql cluster NDB总结
    读《构建之法》13--17章有感
    读《构建之法》8--10章
    作业5.2
    作业5.1
    读《构建之法》6--7章读后感
    做汉堡,做汉堡
    《构建之法》1—5章读后感
    第二次作业
    1
  • 原文地址:https://www.cnblogs.com/2013likong/p/3466702.html
Copyright © 2020-2023  润新知