原作者: 雨晨
至于剩余的页面,我们依样画葫芦,使用asp+ datalist或是repeater控件。这样做是必要的,因为按设计要求需要定制的数据布局,而不是一个标准的表格显示。其中有个页面,classcatalog.aspx,有一处要求勾选值,然后根据选中的值,运行两个可能输出中的一个。该页就利用了repeater控件,因此我们显示地创建了表格的行与列,而没有让控件来完成这一切。这是在templates的内部完成的。在asp中,看起来是这样子的:
检查是否提供优惠
if rssessions("special") = true then
若本课程提供优惠,则输出“special offer!”
response.write "< td valign=top align=center>" & vbcrlf
response.write "< a href=""classdetail.asp?sessionid="
response.write rssessions("sessionid")
response.write """name=""click for more detail"">"
response.write "special offer!"
response.write "< /td>"
else
若本课程不提供优惠,则在栏中输出"–"
response.write "< td valign=top align=center>–< /td>"
end if
为了在asp+中达到同样的效果,我们使用了一个函数。在脚本块中,位于page_load 事件下,我们创建以下代码:
function checkspecial(byref blnspecial as boolean, _
byref intnumber as integer) as string
if blnspecial = true then
checkspecial = "< a href=" & chr(34) & _
"classdetail.aspx?sessionid=" & _
intnumber & chr(34) & ">special!!< /a>"
else
checkspecial = "–"
end if
end function
然后只须从asp+ repeater中调用函数:
< template name = "itemtemplate">
< tr>
[ other data being displayed ]
< td valign=top align=center>
< %=checkspecial(container.dataitem("special"),
container.dataitem("session_id"))%>
< /td>
< /tr>
< /template>
container指的是涉及我们的asp+ reapter控件的数据的父对象。通过调用container.dataitem("special")及container.dataitem("session_id") ,将父对象(即asp+ repeater控件)中的列的值传递给了函数
