79: <div id=cItem3>
80: <table class="ChiDing01" border=0 cellpadding=1 cellspac-ing=1 width='100%'>
81: <tr>
82: <td width="20"> </td>
83: <td><a href="MoreInfo.asp"style="cursor:Hand" align="absbottom" target="mainframe"><font color=#000000>索取详细信息</font></a></td>
84: </tr>
85: </table>
程序说明
第31行:提供客户端选择“关于我们”的选项。这个选项目前并未提供超级链接的功能,用户可以自行添加必要的链接。
第39行:指定当用户选择时,执行的ASP程序为“NewArrival.asp”。
第83行:指定当用户选择时,执行的ASP程序为“MoreInfo.asp”。
14-2-3 动态选项的设计
“Function.asp”程序的核心与重点。在执行这个程序段后,将会根据表的实际内容,动态产生不同的选项。
“Function.asp”程序段
43: <%
44: On Error Resume Next
45: SQL = "Select * From 产品类别 order by 类别编号"
46: Set Rs = OBJConn.Execute(SQL)
47: datas = rs.getrows(500)
48: %>
49: <% for i = 0 to ubound(datas,2) %>
50:
51: <table class="ChiDing01" border=0 cellpadding=1 cellspac-ing=1 width='100%'>
52: <tr>
53: <td width="7"> </td>
54: <td width='10'><imgsrc="Images/FolderClosed.gif "id="Out<%=I+1%>" style="cursor:Hand" class=cItem align="absbott-om" width="9" height="9"></td>
55: <td><a href="#<% = datas(1,i)%>" id="Out<%=I+1 %>" style="cursor:Hand" class=cItem align="absbottom"><% = datas (1,i) %></a></td>
56: </tr>
57: </table>
58: <div id="Out<%=I+1%>a" style="display:None">
59: <%
60: SQL = "Select * From 产品基本信息 Where 类别编号=" & datas(0,i) & " order by 产品代号"
61: Set Rs = OBJConn.Execute(SQL)
62: if not rs.eof then
63: datas1 = rs.getrows(500)
64: %>
65: <table class="ChiDing02" cellspacing="3" border=0 width ='100%'>
66: <% for J = 0 to ubound(datas1,2) %>
67: <tr>
68: <td width="24"> </td>
69: <td><a href="/ProductShow.asp?ClassifyNo=<%=Datas(0,i)%>#<% = datas1 (0,j) %>" target="mainframe"><% = datas1(1,j)%></a></td>
70: </tr>
71: <% next %>
72:
73: </table>
74: <% end if %>
75: </div>
76: <%
77: next
78: %>
程序说明
第44~47行:从“产品类别”表中取出所有记录的内容。
在第47行上,笔者使用的是ADO对象的“getrows”方法,并且限定最大的类别数量为“501”条记录。“getrows”方法可以将SQL Query查询结果的Recordset集合直接转换成相对应的数组,供ASP程序使用,而数组内容的排列方式则与Recordset完全相同。
例如:上述的SQL Query为“Select * From 产品类别”,则使用“getrows”方法之后的数组内容与原表完全相同。所产生的变量为Datas,其信息排列方式为Datas(字段,记录条数)。例如Datas(0,0)的内容即为第一条记录的第一个字段内容(即为类别编号)。
第49行:使用ubound函数,这个函数可以取出Datas数组变量中最大的行数(记录条数)。
第49~78行:根据“For…Next”语句的变化,同时根据Datas数组变量的数值自动分类;并且根据所取得的“类别编号”,自“产品基本信息”中,取出符合“类别编号”的产品名称。
运作方式:根据“For…Next”语句的变量i的数值,自动在Datas数组变量中逐条取出“类别编号”之后,接着再向“产品基本信息”表查询相符的产品信息,并且使用ADO的“getrows”方法,将查询结果的Recordset存放在Datas1数组变量中。
第69行:使用的是Request.QueryString方法。根据Datas以及Datas1数组变量的内容,自动产生超级链接的内容。
例如:Datas(0,0)取出的是“0001”时,而Datas1(0,0)取出的数据是“0001000001”时,所产生的超级链接即为“PorductShow.asp? ClassifyNo= 0001# 0001000001”。这段超级链接的意思是直接执行“ProductShow.asp”程序,并且将画面自动卷动到“ProductShow.asp”输出结果的“0001000001”超级链接上。详细说明请参考”ProductShow.asp”程序的说明内容。
14-2-4 CSS表现方式的控制
在执行这个程序片段后,在网页上可以产生选项功能的“显示”与“隐藏”效果。
“Function.asp”程序段
93: <Script language="javascript">
94: <!--
95: function DynamicFunc()
96: {
97: var tID, sTAG, tTag;
98: sTAG = window.event.srcElement;
99: if (sTAG.className == "cItem")
100: {
101: tID = sTAG.id + "a";
102: tTag = document.all(tID);
103: if (tTag.style.display == "none")
104: {
105: tTag.style.display = "";
106: if (sTAG.tagName == "IMG")
107: sTAG.src = "/Images/FolderOpened.gif";
108: }
109: else
110: {
111: tTag.style.display = "none";
112: if (sTAG.tagName == "IMG")
113: sTAG.src = "/Images/FolderClosed.gif";
114: }
115: }
116: }
117: cItem.onclick = DynamicFunc;
118: //-->
119: </script>
程序说明
这个程序段的功能为“打开或隐藏”产品名称。当用户在调用这段程序时,请注意以下事项:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页