欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP 3.0高级编程(四十六)

程序员文章站 2023-02-20 22:37:47
表10-5  支持数据绑定的html元素 html元素 绑定属性 可否更 新数据 可否表 格绑定 可否作为 html显示 a...
表10-5  支持数据绑定的html元素
html元素
绑定属性
可否更
新数据
可否表
格绑定
可否作为
html显示

a
href
不可
不可
不可

applet
param
可以
不可
不可

button
innertext和innerhtml
不可
不可
可以

div
innertext和innerhtml
不可
不可
可以

frame
src
不可
不可
不可

iframe
src
不可
不可
不可

img
src
不可
不可
不可

input
checked
可以
不可
不可

type=checkobx input
value
可以
不可
不可

type=hidden input
vale
可以
不可
不可

type=label input
value
可以
不可
不可

type=password input
checked
可以
不可
不可

type=radio input
value
可以
不可
不可

type=text label
innertext和innerhtml
不可
不可
可以

legend
innertext和innerhtml
不可
不可
不可

marquee
innertext和innerhtml
不可
不可
可以

object
param
可以
不可
不可

select
选择的<option>元素文本
可以
不可
不可

span
innertext和innerhtml
不可
不可
可以

table

不可
可以
不可

textarea
value
可以
不可
不可

2.  单个记录绑定
单个记录绑定用于只显示单行数据的情况。例如,考虑下面的代码:
id:                 <span datasrc="#dsodata" datafld="au_id"></span><br>
first name:     <span datasrc="#dsodata" datafld="au_fname"></span><br>
last name:     <span datasrc="#dsodata" datafld="au_lname"></span><br>
phone:            <span datasrc="#dsodata" datafld="phone"></span><br>
address:         <span datasrc="#dsodata" datafld="address"></span><br>
city:        <span datasrc="#dsodata" datafld="city"></span><br>
state:             <span datasrc="#dsodata" datafld="state"></span><br>
zip:                <span datasrc="#dsodata" datafld="zip"></span><br>
contact:         <span datasrc="#dsodata" datafld="contract"></span><br>
使用单个记录绑定时,每一个绑定的html元素都要确定数据源(datasrc)和绑定的字段(datafld)。
以上数据绑定的结果如图10-5所示:

图10-5  单个记录绑定的结果
作为一个结果来说,这已经满足要求了,但由于在html文档中忽略了空格,所以数据排列得不整齐。数据绑定使我们易于得到数据,但看上去不太美观。一个好方法是使用表格来对齐数据。
<table id="tbldata">
  <tr><td>id:</td>
<td><span datasrc="#dsodata" datafld="au_id"></span></td></tr>
  <tr><td>first name:</td>
<td><span datasrc="#dsodata" datafld="au_fname"></span></td></tr>
  <tr><td>last name:</td>
<td><span datasrc="#dsodata" datafld="au_lname"></span></td></tr>
  <tr><td>phone:</td>
<td><span datasrc="#dsodata" datafld="phone"></span></td></tr>
  <tr><td>address:</td>
<td><span datasrc="#dsodata" datafld="address"></span></td></tr>
  <tr><td>city:</td>
<td><span datasrc="#dsodata" datafld="city"></span></td></tr>
  <tr><td>state:</td>
<td><span datasrc="#dsodata" datafld="state"></span></td></tr>
  <tr><td>zip:</td>
<td><span datasrc="#dsodata" datafld="zip"></span></td></tr>
  <tr><td>contact:</td>
<td><span datasrc="#dsodata" datafld="contract"></span></td></tr>
</table>
这个html文档虽然不容易,但却提供了一个较好的显示结果,如图10-6所示:

图10-6  单个记录绑定的表格显示结果
注意,这个例子只显示了使用span元素来存放数据。如果想编辑数据,那么可以使用input元素来实现。例如:
<table id="tbldata">
  <tr><td>id:</td>
<td>
<input type="text" datasrc="#dsodata" datafld="au_id"></input>
</td>
</tr>
...
       </table>
这里使用了一个text类型的input元素。注意,数据绑定几乎是相同的,仅仅是html元素不同。结果如图10-7所示:

图10-7  单个记录绑定的编辑界面
数据导航
除非能得到其他记录,否则只显示单条记录并不理想。幸运的是数据控件有一个recordset属性,它是实际的含有数据的ado记录集。回顾第8章,应该记得记录集有移动记录的方法:
· movefirst。
· movenext。
· moveprevious。
· movelast。
举一个例子,假定想在html页面中增加一些按钮以获得记录导航的能力,如图10-8所示:

图10-8  导航按钮
可以用如下代码创建按钮:
<button id="cmdfirst" title="first record"
    onclick="dsodata.recordset.movefirst()">&nbsp;|<&nbsp;</button>

<button id="cmdprevious" title="previous record"
    onclick="if (!dsodata.recordset.bof) dsodata.recordset.moveprevious()">
    &nbsp;<&nbsp;</button>

<button id="cmdnext" title="next record"
    onclick="if (!dsodata.recordset.eof) dsodata.recordset.movenext()">
    &nbsp;>&nbsp;</button>

<button id="cmdlast" title="last record"
    onclick="dsodata.recordset.movelast()">&nbsp;>|&nbsp;</button>&nbsp;
这些代码仅仅利用了记录集中移动记录的方法。移到第一条和最后一条记录实现想来相当容易。只需记住数据控件有一个recordset属性,由于该属性是一个对象,所以有其自己的方法。因此,代码可以写为:
dsodata.recordset.movefirst()
以上代码只是简单地调用数据控件管理的记录集的movefirst方法。
移到上一条和下一条记录的代码看上去有一点技巧,但也很简单。
if (!dsodata.recordset.bof)
dsodata.recordset.moveprevious()
以上是向后移动记录的方法,只需在执行moveprevious方法之前,判断一下记录集的bof属性,以确定当前记录不在记录集的开始位置。
3.  表格绑定
表格绑定不同于单个记录绑定,因为不只是为对齐数据而使用表格。在表格绑定中把数据绑定到了table元素,能够一次看到多条记录,