無框架 Ajax分頁(原創(chuàng))
更新時間:2009年08月07日 00:34:50 作者:
最近想做一個Ajax的功能,網(wǎng)上一搜幾乎全是基于某某框架的Ajax分頁,要么需給頁面加上<scriptManager></scriptManager>,要么需引入某dll,要么需使用類似于jquery的框架。
AjaxProcess.aspx
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxProcess.aspx.cs" Inherits="AjaxDemo.AjaxPager.MyAjaxPager.AjaxProcess" %>
<asp:Repeater ID="rptGrid" runat="server">
<HeaderTemplate>
<table>
<tr>
<th style="border:solid 1px red;">編號</th>
<th style="border:solid 1px red;">姓名</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td style="border:solid 1px red;"><%# Eval("Id") %></td>
<td style="border:solid 1px red;"><%# Eval("Name") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
注意,這個Ajax處理頁面的aspx部分并不像往常那樣是光禿禿的,只有<% %>內(nèi)的信息,它的下面多了一個repeater控件,細(xì)心的朋友會發(fā)現(xiàn),這個repeater控件和主頁面的repeater控件一摸一樣。就是利用這個repeater控件來生成返回的html內(nèi)容的,具體怎么做,請看代碼:
AjaxProcess.aspx.cs
復(fù)制代碼 代碼如下:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.IO;
namespace AjaxDemo.AjaxPager.MyAjaxPager
{
public class Item
{
public string Id
{
get;
set;
}
public string Name
{
get;
set;
}
}
public partial class AjaxProcess : System.Web.UI.Page
{
private int PageSize
{
get { return 10; }
}
private List<Item> GenerateData()
{
List<Item> lstItems = new List<Item>();
for (int i = 1; i <= 1000000; i++)
{
Item it = new Item();
it.Id = i.ToString();
it.Name = "zs" + i;
lstItems.Add(it);
}
return lstItems;
}
private List<Item> GetData(int index)
{
List<Item> lstItem = GenerateData();
List<Item> bdItem = new List<Item>();
int begIndex = (index - 1) * PageSize;
int endIndex = index * PageSize;
for (int i = begIndex; i < endIndex; i++)
{
bdItem.Add(lstItem[i]);
}
return bdItem;
}
private string GetHtml(Control control)
{
StringBuilder sb = new StringBuilder();
StringWriter writer = new StringWriter(sb);
HtmlTextWriter writer2 = new HtmlTextWriter(writer);
control.RenderControl(writer2);
return sb.ToString();
}
protected void Page_Load(object sender, EventArgs e)
{
int index = 0;
if (int.TryParse(Request.QueryString["index"], out index))
{
//獲取到index再進(jìn)行操作
this.rptGrid.DataSource = this.GetData(index);
this.rptGrid.DataBind();
Response.Clear();
string html = this.GetHtml(rptGrid);
Response.Write(html);
Response.End();
}
}
}
}
代碼相當(dāng)簡單,GenerateData()方法用來生成一個DataSource,GetData(int index)方法用來讀取分頁信息。在Page_Load事件中,會首先獲取請求字符串中的index(頁碼),然后利用index取得當(dāng)前頁的信息并將它綁定到repeater控件上,然后利用GetHtml()方法來獲取綁定數(shù)據(jù)后的repeater控件的html內(nèi)容,將它返回。
Ok,在主頁面的js中。
復(fù)制代碼 代碼如下:
var gridData = xmlHttp.responseText;
var grid = document.getElementById("grid");
grid.innerHTML = gridData;
我們獲取返回的這段html,并將它的內(nèi)容輸出到主頁面的制定div中,到此就成功完成了一次分頁請求。
這是一個簡單的demo,如果有需要,還可以加一些分頁等待過程中的動畫什么的,這里就不詳述了。
以上東西希望可以幫助到有需要的朋友。
相關(guān)文章
用juery的ajax方法調(diào)用aspx.cs頁面中的webmethod方法示例
juery的ajax調(diào)用aspx.cs頁面中的webmethod方法:首先在 aspx.cs文件里建一個公開的靜態(tài)方法,然后加上WebMethod屬性,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈,希望對大家有所幫助2013-07-07
分頁技術(shù)原理與實(shí)現(xiàn)之無刷新的Ajax分頁技術(shù)(三)
這篇文章主要介紹了分頁技術(shù)原理與實(shí)現(xiàn)的第三篇:無刷新的Ajax分頁技術(shù),感興趣的小伙伴們可以參考一下2016-06-06
AJAX級聯(lián)下拉框的簡單實(shí)現(xiàn)案例
本篇文章主要是對AJAX級聯(lián)下拉框的簡單實(shí)現(xiàn)案例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02
Ajax 設(shè)置Access-Control-Allow-Origin實(shí)現(xiàn)跨域訪問
這篇文章主要介紹了Ajax 設(shè)置Access-Control-Allow-Origin實(shí)現(xiàn)跨域訪問,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02
ajax+asp無限級分類樹型結(jié)構(gòu)的代碼
ajax+asp無限級分類樹型結(jié)構(gòu)的代碼...2007-10-10
編碼為GB2312網(wǎng)站讓AJAX接收的數(shù)據(jù)顯示支持中文
GB2312 網(wǎng)站AJAX接收的數(shù)據(jù)顯示支持中文2010-01-01

