当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 利用AJAX与数据岛实现无刷新绑定

ASP.NET
Asp.net 时间操作基类(支持短日期,长日期,时间差)
asp.net 获取机器硬件信息(cpu频率、磁盘可用空间、内存容量等)
asp.net 数据库备份还原(sqlserver+access)
Asp.Net 数据操作类(附通用数据基类)
Asp.net 弹出对话框基类(输出alet警告框)
Asp.net 文件上传类(取得文件后缀名,保存文件,加入文字水印)
Asp.net Socket客户端(远程发送和接收数据)
Asp.net 字符串操作基类(安全,替换,分解等)
Asp.Net数据输出到EXCEL表格中
asp.net Gridview里添加汇总行
asp.net UpdatePanel的简单用法
asp.net ajaxControlToolkit FilteredTextBoxExtender的简单用法
this connector is disabled错误的解决方法
sql事务应用积累
asp.net Page.Controls对象(找到所有服务器控件)
在asp.NET中字符串替换的五种方法
ASP.NET缓存方法分析和实践示例代码
asp.net 在DNN模块开发中遇到的resx怪问题
ASP.NET State service状态服务的问题解决方法
asp.net 结合mysql存储过程进行分页代码

ASP.NET 中的 利用AJAX与数据岛实现无刷新绑定


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 101 ::
收藏到网摘: n/a

首先我们今天要用到的是Ajax.NET Professional ,您可以从http://www.schwarz-interactive.de/ 获取关于AJAX.NET的相关信息。其次还需要知道XML数据岛的相关知识。
下面我们先来看一个简单的绑定例子:
第一步先确定XML数据源
<xml ID="xmlData" name="xmlData">
 <root>
<METADATA>
 <AUTHOR>John Smith</AUTHOR>
 <GENERATOR>Visual Notepad</GENERATOR>
 <PAGETYPE>Reference</PAGETYPE>
 <ABSTRACT>Specifies a data island</ABSTRACT>
</METADATA>
<METADATA>
 <AUTHOR>John Smith2</AUTHOR>
 <GENERATOR>Visual Notepad2</GENERATOR>
 <PAGETYPE>Reference2</PAGETYPE>
 <ABSTRACT>Specifies a data island2</ABSTRACT>
</METADATA>
<METADATA>
 <AUTHOR>John Smith3</AUTHOR>
 <GENERATOR>Visual Notepad3</GENERATOR>
 <PAGETYPE>Reference3</PAGETYPE>
 <ABSTRACT>Specifies a data island3</ABSTRACT>
</METADATA>
 </root>
</xml>
第二步确定绑定容器,在这里我们使用Table
<TABLE dataSrc="#xmlData" border=1>
 <TR>
<TD><span dataFld="AUTHOR">loading...</span></TD>
<TD><span dataFld="GENERATOR">loading...</span></TD>
<TD><span dataFld="PAGETYPE">loading...</span></TD>
<TD><span dataFld="ABSTRACT">loading...</span></TD>
 </TR>
</TABLE>
把这两段代码Copy到您的HTMl页面运行既可看到效果。
第一段是我们的XML数据源,也就是要绑定的数据,METADATA结点相当于表名, AUTHOR、GENERATOR、PAGETYPE、ABSTRACT相当于列名,下面的Table是用来显示数据的容器。<TABLE dataSrc="#xmlData" border=1>是指定Table的数据源,<span dataFld="AUTHOR">loading...</span>绑定字段名。
好了,知道这些之后就再来看如何结合Ajax实现无刷新绑定。
第一步:配置Ajax,在Web.config文件中加入配置节:
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
第二步,编写返回数据集的代码:
public class MyClass
{
 [AjaxMethod]
 public string GetDataSet()
 {
DataSet dst = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("Text");
dt.Columns.Add("Number");
Random random = new Random(Guid.NewGuid().GetHashCode());
for (int i = 0; i < random.Next(10,20); i++)
{
 DataRow row = dt.NewRow();
 row["Text"] = Guid.NewGuid().ToString("N");
 row["Number"] = random.Next(100);
 dt.Rows.Add(row);
}
dst.Tables.Add(dt);
string text = "";
using(MemoryStream ms = new MemoryStream())
{
 dst.WriteXml(ms);
 ms.Position = 0;
 StreamReader sr = new StreamReader(ms);
 text = sr.ReadToEnd();
}
return text;
 }
}
第三步:在Page_Load中注册该方法,AjaxPro.Utility.RegisterTypeForAjax(typeof(WebTest1.AjaxTest1));(WebTest1是名称空间的名字)
第四步:添加客户端绑定
<INPUT onclick="WebTest1.MyClass.GetDataSet(callback)" type="button" value="GetDataSet">
<div id="oDataPanel">
</div>
<TABLE datasrc="#xmlData" WIDTH="500" BORDER="1"
CELLSPACING="1" CELLPADDING="1">
 <thead>
<tr>
 <th width="70%">姓名</th>
 <th width="30%">年龄</th>
</tr>
 </thead>
 <TR>
<TD><span datafld="Text"></span></TD>
<TD><span datafld="Number"></span></TD>
 </TR>
</TABLE>
<div id="oDataPanel">是准备用来存放Xml数据源的容器
第五步:编定加载数据的JavaScript代码
function callback(res)
{
if(!res.error)
{
document.all.oDataPanel.innerHTML = ’<xml id="xmlData">’+ res.value +’</xml>’;
}
else
{
alert(res.error.Message);
}
}