無框架 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控件,細心的朋友會發(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再進行操作
this.rptGrid.DataSource = this.GetData(index);
this.rptGrid.DataBind();
Response.Clear();
string html = this.GetHtml(rptGrid);
Response.Write(html);
Response.End();
}
}
}
}
代碼相當簡單,GenerateData()方法用來生成一個DataSource,GetData(int index)方法用來讀取分頁信息。在Page_Load事件中,會首先獲取請求字符串中的index(頁碼),然后利用index取得當前頁的信息并將它綁定到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)文章
Ajax請求過程中下載文件在FireFox(火狐)瀏覽器下的兼容問題
最近做了個項目,其中有項目需求是這樣的,點擊一個文件鏈接下載該文件,同時向后臺發(fā)送請求,在開發(fā)過程中問題百出,小編把問題總結(jié)分享在腳本之家平臺,供大家參考2016-01-01詳談ajax返回數(shù)據(jù)成功 卻進入error的方法
今天小編就為大家分享一篇詳談ajax返回數(shù)據(jù)成功 卻進入error的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08AJAX實現(xiàn)圖片預(yù)覽與上傳及生成縮略圖的方法
下面小編就為大家?guī)硪黄狝JAX實現(xiàn)圖片預(yù)覽與上傳及生成縮略圖的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09