无框架 Ajax分页

2016-02-19 11:00 0 1 收藏

下面图老师小编跟大家分享无框架 Ajax分页,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - Web开发 】

使用如上方法确实可以实现Ajax分页效果,但我总觉得不够简洁,研究了一下午,终于捣鼓出了点东西O_o
首先创建前台页面MyAjaxPager.aspx
代码如下:


%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyAjaxPager.aspx.cs" Inherits="AjaxDemo.AjaxPager.MyAjaxPager.MyAjaxPager" %
!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
style type="text/css"
.a{}{ height:20px; line-height:20px; border-bottom:1px solid #d8dfea; clear:both;}
.b{}{ float:left; width:30px;}
.c{}{ float:left; width:500px;}
/style
script type="text/javascript" src="http://www.cnblogs.com/JS/AjaxFunction.js"/script
script type="text/javascript"
var xmlHttp;
function getData(pIndex) {
xmlHttp = GetXmlRequest();
xmlHttp.onreadystatechange = ShowRepeaterData;
xmlHttp.open("GET", "AjaxProcess.aspx?index=" + pIndex, true);
xmlHttp.send(null);
}
function ShowRepeaterData() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var gridData = xmlHttp.responseText;
var grid = document.getElementById("grid");
grid.innerHTML = gridData;
}
}
/script
/head
body
form id="form1" runat="server"
div
div id="page"
p align="left"
a href="javascript:getData(1);"1/a
a href="javascript:getData(2);"2/a
a href="javascript:getData(3);"3/a
a href="javascript:getData(4);"4/a
a href="javascript:getData(5);"5/a
a href="javascript:getData(50);"50/a
a href="javascript:getData(500);"500/a
a href="javascript:getData(5000);"5000/a
a href="javascript:getData(50000);"50000/a
a href="javascript:getData(99999);"99999/a
/p
div id="grid"
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
/div
/div
/div
/form
/body
/html

 

画面很简单,就是一排index地址,当点击链接后会以ajax的方式将数据绑定到下边的repeater。

 

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

AjaxProcess.aspx
代码如下:


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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)
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 ListItem GenerateData()
{
ListItem lstItems = new ListItem();
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 ListItem GetData(int index)
{
ListItem lstItem = GenerateData();
ListItem bdItem = new ListItem();
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()方法来获取绑定数据后的repeater控件的html内容,将它返回。
Ok,在主页面的js中。
代码如下:


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


我们获取返回的这段html,并将它的内容输出到主页面的制定div中,到此就成功完成了一次分页请求。
这是一个简单的demo,如果有需要,还可以加一些分页等待过程中的动画什么的,这里就不详述了。
以上东西希望可以帮助到有需要的朋友。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

 

来源:https://www.tulaoshi.com/n/20160219/1596329.html

延伸阅读
标签: Web开发
经过仔细研究和分析,终于让AJAX的模拟浏览器功能达到一个新的高峰. 下面将给我源代码,希望喜欢的朋友转载的时候注明转载出处,这样不管对你自己,还是对本人,都是一种极大的尊重. 记得有篇文章数落AJAX的"七宗罪"中说到,AJAX在浏览页面的时候不能使用链接收藏,也就是浏览器的标签功能,更不更使用浏览器的后退.然后也有篇文章翻译了一个老外的AJAX...
标签: Web开发
项目中某个功能需要同时调用多个ajax,因同步机制,造成了ie假死的现象,自己写了连接池,效果不理想,所以索性从网上DOWN成熟的ajax框架来研究使用。 xajax框架: xajax通过Javascript直接调用PHP函数。它使用Javascript stub来调用PHP脚本中的函数,对象方法,和类方法。服务器端响应由于xajax响应对象创建,该对象提供非常多的命令比如:...
标签: Web开发
小试了下AJAX,感觉比prototype简洁多了,在JQuery中,AJAX有三种实现方式:$.ajax(),$.post,$.get()。 XHTML(主要): div id="result" style="background:orange;border:1px solid red;width:300px;height:400px;"/div form id="formtest" action="" method="post" pspan输入姓名:/spaninput type="text" name="username" id="input1" //p ...
标签: Web开发
项目中某个功能需要同时调用多个ajax,因同步机制,造成了ie假死的现象,自己写了连接池,效果不理想,所以索性从网上DOWN成熟的ajax框架来研究使用。 jqpie框架: 这是一个扩展自jQuery,结合PHP的一个Ajax框架。支持XML,HTML和JSON handler。 利用$.getJSON方法简化来自PHP的请求和处理数据. a href="#" onClick="$.getJSON('handle...
标签: Web开发
Potix 宣布发布 ZK 1.0。 ZK 是一个基于XUL嵌入AJAX事件驱动的Java 框架,用于丰富用户网络应用程序界面。 ZK包括一个基于AJAX可自动进行交互式操作的事件驱动引擎和一套兼容XUL的组件.利用直观的事件驱动模型,你可以用具有XUL特性的组件来表示你的应用程序并通过由用户触发的监听事件来操作这些组件,就像开发桌面应用程序一样简单。...

经验教程

663

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部