Ajax分页功能的无框架实现方法

  •     
  •     
  •     
  • Ajax分页功能的无框架实现的画面很简单,就是一排index地址,当点击链接后会以ajax的方式将数据绑定到下边的repeater。

    主要功能是在处理Ajax请求的AjaxProcess.aspx页面实现的,我们来看看。

     
     
     
     
    1. AjaxProcess.aspx
    2. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxProcess.aspx.cs" Inherits="AjaxDemo.AjaxPager.MyAjaxPager.AjaxProcess" %>
    3.  ID="rptGrid" runat="server">
    4.     
    5.         
    6.             
    7.                  style="border:solid 1px red;">编号
    8.                  style="border:solid 1px red;">姓名
    9.             
    10.     
    11.     
    12.         
    13.              style="border:solid 1px red;"><%# Eval("Id") %>
    14.              style="border:solid 1px red;"><%# Eval("Name") %>
    15.         
    16.     
    17.     
    18.         
    19.     
    20.   

    注意,这个Ajax处理页面的aspx部分并不像往常那样是光秃秃的,只有<% %>内的信息,它的下面多了一个repeater控件,细心的朋友会发现,这个repeater控件和主页面的repeater控件一摸一样。就是利用这个repeater控件来生成返回的html内容的,具体怎么做,请看代码:

     
     
     
     
    1. AjaxProcess.aspx.cs
    2. using System;
    3. using System.Collections.Generic;
    4. using System.Web;
    5. using System.Web.UI;
    6. using System.Web.UI.WebControls;
    7. using System.Text;
    8. using System.IO;
    9. namespace AjaxDemo.AjaxPager.MyAjaxPager
    10. {
    11.     public class Item
    12.     {
    13.         public string Id
    14.         {
    15.             get;
    16.             set;
    17.         }
    18.         public string Name
    19.         {
    20.             get;
    21.             set;
    22.         }
    23.     }
    24.     public partial class AjaxProcess : System.Web.UI.Page
    25.     {
    26.         private int PageSize
    27.         {
    28.             get { return 10; }
    29.         }
    30.         private List GenerateData()
    31.         {
    32.             List lstItems = new List();
    33.             for (int i = 1; i <= 1000000; i++)
    34.             {
    35.                 Item it = new Item();
    36.                 it.Id = i.ToString();
    37.                 it.Name = "zs" + i;
    38.                 lstItems.Add(it);
    39.             }
    40.             return lstItems;
    41.         }
    42.         private List GetData(int index)
    43.         {
    44.             List lstItem = GenerateData();
    45.             List bdItem = new List();
    46.             int begIndex = (index - 1) * PageSize;
    47.             int endIndex = index * PageSize;
    48.             for (int i = begIndex; i < endIndex; i++)
    49.             {
    50.                 bdItem.Add(lstItem[i]);
    51.             }
    52.             return bdItem;
    53.         }
    54.         private string GetHtml(Control control)
    55.         {
    56.             StringBuilder sb = new StringBuilder();
    57.             StringWriter writer = new StringWriter(sb);
    58.             HtmlTextWriter writer2 = new HtmlTextWriter(writer);
    59.             control.RenderControl(writer2);
    60.             return sb.ToString();
    61.         }
    62.         protected void Page_Load(object sender, EventArgs e)
    63.         {
    64.             int index = 0;
    65.             if (int.TryParse(Request.QueryString["index"], out index))
    66.             {
    67.                 //获取到index再进行操作
    68.                 this.rptGrid.DataSource = this.GetData(index);
    69.                 this.rptGrid.DataBind();
    70.                 Response.Clear();
    71.                 string html = this.GetHtml(rptGrid);
    72.                 Response.Write(html);
    73.                 Response.End();
    74.             }
    75.         }
    76.     }
    77. }

    代码相当简单,GenerateData()方法用来生成一个DataSource,GetData(int index)方法用来读取分页信息。在Page_Load事件中,会首先获取请求字符串中的index(页码),然后利用index取得当前页的信息并将它绑定到repeater控件上,然后利用GetHtml()方法来获取绑定数据后的repeater控件的html内容,将它返回。

    Ok,在主页面的js中。

     
     
     
     
    1. var gridData = xmlHttp.responseText;
    2. var grid = document.getElementById("grid");
    3. grid.innerHTML = gridData;

    我们获取返回的这段html,并将它的内容输出到主页面的制定div中,到此就成功完成了一次分页请求。

    这是一个简单的demo,如果有需要,还可以加一些分页等待过程中的动画什么的,这里就不详述了。

    以上Ajax分页功能的内容希望可以帮助到有需要的朋友。


    网站栏目:Ajax分页功能的无框架实现方法
    路径分享:http://www.gydahua.com/article/cdggpgc.html
    扫二维码与项目经理沟通

    我们在微信上24小时期待你的声音

    解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流