你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Java专栏
利用AJAX与数据岛实现无刷新绑定
 

首先我们今天要用到的是Ajax.NET Professional ,您可以从http://www.schwarz-interactive.de/ 获取关于AJAX.NET的相关信息。其次还需要知道XML数据岛的相关知识。

下面我们先来看一个简单的绑定例子:

第一步先确定XML数据源

  1. <xml ID="xmlData" name="xmlData">   
  2.   
  3.  <root>   
  4.   
  5. <METADATA>   
  6.   
  7.  <AUTHOR>John Smith</AUTHOR>   
  8.   
  9.  <GENERATOR>Visual Notepad</GENERATOR>   
  10.   
  11.  <PAGETYPE>Reference</PAGETYPE>   
  12.   
  13.  <ABSTRACT>Specifies a data island</ABSTRACT>   
  14.   
  15. </METADATA>   
  16.   
  17. <METADATA>   
  18.   
  19.  <AUTHOR>John Smith2</AUTHOR>   
  20.   
  21.  <GENERATOR>Visual Notepad2</GENERATOR>   
  22.   
  23.  <PAGETYPE>Reference2</PAGETYPE>   
  24.   
  25.  <ABSTRACT>Specifies a data island2</ABSTRACT>   
  26.   
  27. </METADATA>   
  28.   
  29. <METADATA>   
  30.   
  31.  <AUTHOR>John Smith3</AUTHOR>   
  32.   
  33.  <GENERATOR>Visual Notepad3</GENERATOR>   
  34.   
  35.  <PAGETYPE>Reference3</PAGETYPE>   
  36.   
  37.  <ABSTRACT>Specifies a data island3</ABSTRACT>   
  38.   
  39. </METADATA>   
  40.   
  41.  </root>   
  42.   
  43. </xml>  

 

第二步确定绑定容器,在这里我们使用Table

  1. <TABLE dataSrc="#xmlData" border=1>   
  2.   
  3.  <TR>   
  4.   
  5. <TD><span dataFld="AUTHOR">loading...</span></TD>   
  6.   
  7. <TD><span dataFld="GENERATOR">loading...</span></TD>   
  8.   
  9. <TD><span dataFld="PAGETYPE">loading...</span></TD>   
  10.   
  11. <TD><span dataFld="ABSTRACT">loading...</span></TD>   
  12.   
  13.  </TR>   
  14.   
  15. </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文件中加入配置节:

  1. <httpHandlers>   
  2.   
  3. <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>   
  4.   
  5. </httpHandlers>  

 

第二步,编写返回数据集的代码:

  1. public class MyClass   
  2.   
  3. {   
  4.   
  5.  [AjaxMethod]   
  6.   
  7.  public string GetDataSet()   
  8.   
  9.  {   
  10.   
  11. DataSet dst = new DataSet();   
  12.   
  13. DataTable dt = new DataTable();   
  14.   
  15. dt.Columns.Add("Text");   
  16.   
  17. dt.Columns.Add("Number");   
  18.   
  19. Random random = new Random(Guid.NewGuid().GetHashCode());   
  20.   
  21. for (int i = 0; i < random.Next(10,20); i++)   
  22.   
  23. {   
  24.   
  25.  DataRow row = dt.NewRow();   
  26.   
  27.  row["Text"] = Guid.NewGuid().ToString("N");   
  28.   
  29.  row["Number"] = random.Next(100);   
  30.   
  31.  dt.Rows.Add(row);   
  32.   
  33. }   
  34.   
  35. dst.Tables.Add(dt);   
  36.   
  37. string text = "";   
  38.   
  39. using(MemoryStream ms = new MemoryStream())   
  40.   
  41. {   
  42.   
  43.  dst.WriteXml(ms);   
  44.   
  45.  ms.Position = 0;   
  46.   
  47.  StreamReader sr = new StreamReader(ms);   
  48.   
  49.  text = sr.ReadToEnd();   
  50.   
  51. }   
  52.   
  53. return text;   
  54.   
  55.  }   
  56.   
  57. }  

第三步:在Page_Load中注册该方法,AjaxPro.Utility.RegisterTypeForAjax(typeof(WebTest1.AjaxTest1));(WebTest1是名称空间的名字)

第四步:添加客户端绑定

  1. <INPUT onclick="WebTest1.MyClass.GetDataSet(callback)" type="button" value="GetDataSet">   
  2.   
  3. <div id="oDataPanel">   
  4.   
  5. </div>   
  6.   
  7. <TABLE datasrc="#xmlData" WIDTH="500" BORDER="1"    
  8.   
  9. CELLSPACING="1" CELLPADDING="1">   
  10.   
  11.  <thead>   
  12.   
  13. <tr>   
  14.   
  15.  <th width="70%">姓名</th>   
  16.   
  17.  <th width="30%">年龄</th>   
  18.   
  19. </tr>   
  20.   
  21.  </thead>   
  22.   
  23.  <TR>   
  24.   
  25. <TD><span datafld="Text"></span></TD>   
  26.   
  27. <TD><span datafld="Number"></span></TD>   
  28.   
  29.  </TR>   
  30.   
  31. </TABLE>   
  32.   
  33. <div id="oDataPanel">是准备用来存放Xml数据源的容器  

第五步:编定加载数据的JavaScript代码

  1. function callback(res)   
  2.   
  3. {   
  4.   
  5. if(!res.error)   
  6.   
  7. {   
  8.   
  9. document.all.oDataPanel.innerHTML = '<xml id="xmlData">'+ res.value +'</xml>';   
  10.   
  11. }   
  12.   
  13. else  
  14.   
  15. {   
  16.   
  17. alert(res.error.Message);   
  18.   
  19. }   
  20.   
  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089