Spry Framework入门(四)——XML数据集排序

简介
        Spry Framework是Adobe出品的轻量级的支持Ajax的JavaScript库,以HTML为中心,使用最基本的HTML、CSS和JavaScript来实现丰富Web页面体验。
       本例子演示了数据集的字段排序功能以及对数据集排序时候触发的事件的处理;代码很简单,需要讲一下sort方法,sort方法有2个入口参数:字段名和排序顺序(ascending  descending  toggle),前面一个就是需要排序的字段名称,第二个是指示排序顺序(从小到大还是从大到小),其中toggle为本次排序是否和上次反序,比如当前数据集按字段1升序排序,那调用sort方法后则按降序排序,反之亦然。还有一个是排序字段的数据类型,默认的Spry都是按字符串string类型排序,另外Spry提供了数字number和日期date,一共3种数据排序类型。如设置字段为数字类型:dsPhotos.setColumnType("@width", "number");
        顺便做了个数据交替显示的功能。

试验环境

操作系统:windowsXP Sp2
浏览器:FireFox 2.0
WEB服务器:IIS 5.0
Spry库:Spry_P1_3_08-11


安装
http://labs.adobe.com/technologies/spry/ 下载安装包,目前版本为Spry_P1_3_08-11.zip,解开后把includes目录复制到自己的IIS虚拟目录上即可。




页面代码

test.html
 1 None.gif <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
 2 None.gif < html  xmlns ="http://www.w3.org/1999/xhtml"  xmlns:spry ="http://ns.adobe.com/spry" >
 3 None.gif < head >
 4 None.gif < meta  http-equiv ="Content-Type"  content ="text/html; charset=iso-8859-1"   />
 5 None.gif < title > Static Table Sample </ title >
 6 None.gif < script  type ="text/javascript"  src ="includes/xpath.js" ></ script >
 7 None.gif < script  type ="text/javascript"  src ="includes/SpryData.js" ></ script >
 8 None.gif
 9 ExpandedBlockStart.gifContractedBlock.gif < script  type ="text/javascript" > dot.gif
10InBlock.gif//var dsEmployees = new Spry.Data.XMLDataSet("data/employees-01.xml", "employees/employee");
11ExpandedSubBlockStart.gifContractedSubBlock.gifvar dsEmployees = new Spry.Data.XMLDataSet("data/employees-01.xml""employees/employee"dot.gif{ sortOnLoad: "@id", sortOrderOnLoad: "ascending" });
12InBlock.gif
13InBlock.gifvar myObserver = new Object;
14InBlock.gif
15ExpandedSubBlockStart.gifContractedSubBlock.gifmyObserver.onPreSort = function(dataSet, data)dot.gif{
16InBlock.gif    //alert("onPreSort called!");
17InBlock.gif    var info = document.getElementById("info");
18InBlock.gif    info.innerHTML = "<table><tr><th>Last Sort Columns</th><th>Sort Order</th></tr><tr><td>" + data.oldSortColumns + "</td><td>" + data.oldSortOrder + "</td></tr></table>";
19InBlock.gif
20InBlock.gif    info.innerHTML += "<table><tr><th>New Sort Columns</th><th>Sort Order</th></tr><tr><td>" + data.newSortColumns + "</td><td>" + data.newSortOrder + "</td></tr></table>";
21ExpandedSubBlockEnd.gif}
;
22InBlock.gif
23ExpandedSubBlockStart.gifContractedSubBlock.gifmyObserver.onPostSort = function(dataSet, data)dot.gif{
24InBlock.gif    //alert("onPostSort called!");
25ExpandedSubBlockEnd.gif}
;
26InBlock.gif
27InBlock.gif
28InBlock.gifdsEmployees.addObserver(myObserver);
29InBlock.gif
30ExpandedBlockEnd.gif
31None.gif
</ script >
32 None.gif
33 ExpandedBlockStart.gifContractedBlock.gif < style > dot.gif
34InBlock.gif
35ExpandedSubBlockStart.gifContractedSubBlock.gif.even {dot.gif}{
36InBlock.gif    background-color: #eeeeee
37ExpandedSubBlockEnd.gif}

38InBlock.gif
39ExpandedSubBlockStart.gifContractedSubBlock.gif.odd {dot.gif}{
40InBlock.gif    background-color: #ffffff;
41ExpandedSubBlockEnd.gif}

42ExpandedBlockEnd.gif
43None.gif
</ style >
44 None.gif
45 None.gif </ head >
46 None.gif < body >
47 None.gif
48 None.gif < div  spry:region ="dsEmployees" >
49 None.gif < table  border ="1" >
50 None.gif     < tr >
51 None.gif         < th  scope ="col" > Employee ID  </ th >
52 None.gif         < th  scope ="col" > Last Name  </ th >
53 None.gif         < th  scope ="col" > First Name  </ th >
54 None.gif         < th  scope ="col" > Phone </ th >
55 None.gif         < th  scope ="col" > Username </ th >
56 None.gif     </ tr >
57 None.gif     < tr  spry:repeat ="dsEmployees"  class ="{ds_EvenOddRow}" >
58 None.gif         < td > {@id} </ td >
59 None.gif         < td > {lastname} </ td >
60 None.gif         < td > {firstname} </ td >
61 None.gif         < td > {phone} </ td >
62 None.gif         < td > {username} </ td >
63 None.gif     </ tr >
64 None.gif </ table >
65 None.gif
66 None.gif
67 None.gif </ div >
68 None.gif < hr >
69 None.gif < input  type =button  value ="Sort by ID"  onclick ="dsEmployees.sort('@id', 'toggle');"   >
70 None.gif < input  type =button  value ="Sort by Last Name"  onclick ="dsEmployees.sort('lastname', 'toggle');"   >
71 None.gif < br >
72 None.gif < div  id ="info" />
73 None.gif </ body >
74 None.gif </ html >

employees-01.xml
 1 None.gif <? xml version="1.0" encoding="iso-8859-1" ?>
 2 None.gif < employees  xmlns ="http://www.foo.com/employees" >
 3 None.gif     < employee  id ="123456" >
 4 None.gif         < lastname > Smith </ lastname >
 5 None.gif         < firstname > Edward </ firstname >
 6 None.gif         < phone > (415) 333-0235  </ phone >
 7 None.gif         < username > esmith </ username >
 8 None.gif     </ employee >
 9 None.gif     < employee  id ="127937" >
10 None.gif         < lastname > Johnson </ lastname >
11 None.gif         < firstname > Neil </ firstname >
12 None.gif         < phone > (415) 333-9475  </ phone >
13 None.gif         < username > njohnson </ username >
14 None.gif     </ employee >
15 None.gif     < employee  id ="126474" >
16 None.gif         < lastname > Williams </ lastname >
17 None.gif         < firstname > Steve </ firstname >
18 None.gif         < phone > (415) 333-4573  </ phone >
19 None.gif         < username > swilliams </ username >
20 None.gif     </ employee >
21 None.gif     < employee  id ="120585" >
22 None.gif         < lastname > Jones </ lastname >
23 None.gif         < firstname > John </ firstname >
24 None.gif         < phone > (415) 333-9345  </ phone >
25 None.gif         < username > jjones </ username >
26 None.gif     </ employee >
27 None.gif     < employee  id ="127493" >
28 None.gif         < lastname > Brown </ lastname >
29 None.gif         < firstname > Joe </ firstname >
30 None.gif         < phone > (415) 333-5938  </ phone >
31 None.gif         < username > jbrown </ username >
32 None.gif     </ employee >
33 None.gif </ employees >
34 None.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值