【摘要】TDC是Internet Explorer 4.0及以上版本提供的一个组件,它以有界定符文本文件作为数据来源,利用缓冲机制,在本地机实现对数据的动态控制,并支持Recordset集的属性和方法。如果将TDC数据绑定到WEB页面的HTML元素,可以不依赖ASP、CGI等服务器端处理逻辑,实现用户与页面的动态交互,减少动态网页对服务器的依赖程度,减轻服务器的压力和缓解网络拥挤。
【关键字】数据绑定 TDC 动态页面
动态网页一般通过用户与服务器的交互操作实现,用户向服务器发出请求,服务器使用ASP、CGI等获取用户提交的信息,进行处理后将结果返回给给用户,这种方式一方面要求服务器提供上述服务和拥有服务器端执行程序的权限,另一面由于这种方式对服务器的依赖性很强,会加重服务器的负担和网络拥挤程度。Internet explorer 4.0及更高版本可以通过数据绑定技术(Data binding)和表格数据控件TDC(tabular data control)访问有限定符文本文件,以HTML文件为模板显示数据,并通过对已缓冲至本地机的文本文件操作,实现访问客户与数据驱动页面的动态交互。
一. 数据绑定技术
数据绑定由四部分组成——数据源对象(DSO-Data Source Object)、数据引用(Data consumer)、绑定代理(Binding agent)和列表(显示)代理(Table repetition agent)。数据源对象提供数据传输、操作和通过脚本访问数据的能力;数据引用一般指WEB页面元素,它定义数据如何显示等;绑定代理用于数据识别和维护;列表(显示)代理用于保证列表数据的正确引用。
二. TDC组件
TDC是Internet explorer提供的内置数据源控件,提供访问有定界符文本文件的能力,拥有Datasrc、Fielddelim、Textquqlifier、Rowdelim、Sort、Filter和Useheader等属性及Reset方法,并可通过TDC对象的ID.recordset.{ Properties|method},访问相应的Recordset集的属性和方法。
有定界符文本文件
表格一般和数据库对应,在有定界符文本文件中的一行相当于数据库的一个记录,每行中由定界符括起来的字符串相当于记录中的字段。在TDC引用的文本文件中有三种定界符:文本限定符、字段限定符和行限定符。假设文本文件software.txt中有如下内容:
name,description,type,company,location
’IE5.0’,’Microsoft Internet explorer 5.0’,’Browser’,’Microsoft’,’tie50.zip’
’FP98’,’Microsoft Frontpage 98’,’Editor’,’Microsoft’,’fp98.zip’
第一行为字段的名称,第二、三行为两个记录。其中,单引号(’)是文本限定符,逗号(,)是字段限定符。
在WEB页中引用TDC组件
在WEB页中的头部或主体内用<Object>…</Object>语句建立TDC对象的实例,如:
<OBJECT id=software classid=CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83>
<PARAM NAME="TextQualifier" VALUE="'">
<PARAM NAME="FieldDelim" VALUE=",">
<PARAM NAME="DataURL" VALUE="software.txt">
<PARAM NAME="UseHeader" VALUE="true">
</OBJECT>
其中,Id为对象指定一个名称,以便在以后的WEB元素中引用,参数Textqualifer定义文本限定符,参数FieldDelim定义字段限定符,参数DataURL指定TDC读取数据的文本文件,参数UseHeader的Ture和False指定在文本文件中是否有字段名定义。
将数据绑定到Table元素
Table是一种可以进行多值绑定的HTML元素,<Tr>…</Tr>对应一个记录,<Td>…</Td>对应一个字段,在这两个元素对中,利用可以单值绑定元素引用数据,在页面上显示具体地数据内容。如:
<Table datasrc=#software Datapagesize=15>
<Tr>
<Td>名称</Td>
<Td>软件介绍</Td>
……
<Td>下载地址</Td>
</Tr>
<Tr>
<Td><span datafld=”name”></span></Td>
<Td><span datafld=”description”></span></Td>
……
<Td><a datafle=”location”>download</a></Td>
</Tr>
在上面的语句中,利用数据引用组件的DATASRC、DATAFLD及DATAFORMATS、DATAPAGESIZE属性,通过ID属性将文本文件的数据内容绑定到HRML元素,TDC控件自动将符合要求的数据内容在页面中显示。
三. 数据排序、过滤、复位和RECORDSET集
数据排序通过设定排序条件并使用reset方法,按某一字段和以逗号分隔的多个字段组合进行升序或降序排列,字段前有“+”表示按升序排列,“-”号表示按降序排列;过滤按某一查询条件通过reset方法生全部记录的一个子集,并使在表中显示的数据限制在子集范围内。如:
Software.sort=”+name”
Software.reset
对整个记录录按字段name进行升序排列
Software.sort=”+type,-company”
Software.reset
对整个记录按字段type升序和company降序排列。
Software.filter=”type=browser”
Software.reset
生成只含有浏览器(browser)的子集。
Software.filter=”type<>browser&company=Microsoft”
Software.reset
生成满足type不是浏览器(browser)而且公司为Microsoft的整个记录集的子集。
RECORDSET属性
Recordset集有如下属性和方法:
recordset.{MoveFirst | MoveLast | MoveNext | MovePrevious}
移动记录指针指到第一、最后一条、下一条、上一条记录。
recordset.{absolutionpage| pagecount|pagesize}
返回当前页序号、页面总数、每页记录个数。
recordset.{recordcount|AbsolutePosition}
返回记录集中记录个数、当前记录号。
recordset.{eof|bof}
返回是否已到最后、第一个记录。
在WEB页面中,用DatasrcID.recordset.{ Properties|method}操作整个记录集。如:
software.recordset.movenext
可以将上面例子中的记录指向下移一个记录。
四. 一个进行软件查询的交互页实例
本例中用户可以通过两个下拉菜单选排序字段,和按某一软件名对整个数据库进行过滤。
<HTML><HEAD><TITLE>软件查询</TITLE>
<OBJECT id=software classid=CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83>
<PARAM NAME="TextQualifier" VALUE="'">
<PARAM NAME="FieldDelim" VALUE=",">
<PARAM NAME="DataURL" VALUE="software.txt">
<PARAM NAME="UseHeader" VALUE="true">
</OBJECT>
</HEAD>
<BODY>
<B>Sort by:</B>
<SELECT οnchange="software.Sort=('+'+this.value); software.Reset()">
<OPTION value="" selected>None</OPTION>
<OPTION value="name">Name</OPTION>
<OPTION value="type">type</OPTION>
<OPTION value="company">company</OPTION>
</SELECT>
<B>Filter by:</B>
<SELECT οnchange="software.Filter=('name='+this.value); software.Reset()">
<OPTION
value="" selected>None</OPTION>
<OPTION value="IE5.0">ie5.0</OPTION>
<OPTION value="FP98">fp98</OPTION></SELECT>
<TABLE dataSrc=#software cellspacing=0 border=1>
<THEAD>
<TR>
<TD><B>名称</B></TD>
<TD><B>描述</B></TD>
<TD><B>类型</B></TD>
<TD><B>公司</B></TD>
<TD><B>下载</B></TD>
</TR>
</THEAD>
<TBODY>
<TR>
<TD><SPAN dataFld=name></SPAN></TD>
<TD><SPAN dataFld=description></SPAN></TD>
<TD><SPAN dataFld=type></SPAN></td>
<td><span dataFld=company></SPAN></td>
<td><a dataFld=location>download</a></TD>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>
五. 结论
数据绑定和TDC控件给我们提供了脱离服务器端有关处理逻辑支持,实现动态WEB页面的方法和工具,结合DHTML提供的大量的新技术、新方法和控件,可以对TDC控件和WEB页面元素进行更多更精确的控制,利用上面介绍的方法,对小型数进行据查询或个人站点上实现动态网页效果非常好。