文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
asp中有关字符编码转换的几个函数
绝妙的asp生成静态页面html函数
Asp计算页面执行时间
一个简单的用存储过程分页
将asp页面转换成htm页面
ASP网站漏洞解析及黑客入侵防范方法
URL编码与SQL注入
几种常用排序算法(asp)
ASP调用带参数存储过程的几种方式
实用的ASP连接数据库的函数
ASP如何获取真实IP地址
ASP中怎么实现SQL数据库备份、恢复
判断Cookies是否处于开启状态
怎样才能将服务器端文件夹下的文件,..
几行Asp代码实现防止表单重复提交
用ASP设计网站在线人数统计程序
asp论坛在线人数统计研究
如何用ASP远程在数据库中创建Table
用ASP调用SQL Server的视图和存储过程
Asp与XML的关系
ASP读取EXCEL
在ASP中使用Oracle数据库技巧
一个通过web.Mail发送邮件的类
几种打开记录集方式的比较
购物车范例(购物车页面 )
如何使用FSO搜索硬盘文件
GB码和BIG5码的互换技术
用ASP开发WEB日期选择器
一个投票系统的源程序(coveryourasp.c..
列出服务器上的打印机


技术教程 -> ASP教程 ->  
介绍一个制作下拉菜单完全不同的办法
来源:转载   人气:807   录入时间:2007-11-8
    
   我是头一回知道这个方法,以前从没听用过,以前如果我从数据库里读出内容来制作下拉菜单的话都是用循环来做的,现在,让我们来看一下老外的办法。
   
   利用RecordSet.GetString来制作动态下拉菜单。
   
   adodb.recordset的getstring方法有一些BUG,但是你使用得小心一点的话它可以为您工作的很好。
   先介绍一下GETSTRING的用法……如下:
   
   stringValue = rsObject.GetString( format, numRows, columnDelimiter, rowDelimiter, ifNull )
   
   只要建立了RS对象,并且执行了相应操作,不管那是返回一条或者多条记录,甚至是空记录,getstring照样工作,但是如果不加注意的话,这个结果可能就不大好玩了,:P(这个老外也够幽默的)
   
   FORMAT参数只有一个合法值,而且是可选的,让我们略过不管它,如果您想返回全部记录的话,那么那个numrows参数也可以不管它了(可选),IFNULL……照我的理解就象TSQL里的isnull函数差不多,如果是NULL,则随便搞个值替换它,所以也不管它。
   
   剩下两个参数了。。。。不多说废话了,先看他们的例子
   
   <TABLE Border=1>
   <TR><TD>
   <% = Response.Write rs.GetString( , , "</TD><TD>", "</TD></TR><TR>", ) %>
   </TABLE>
   这样写的HTML结果如下:
   <TABLE Border=1>
   <TR>
    <TD>row1, field1 value</TD>
    <TD>row1, field2 value</TD>
   </TR>
   <TR>
    <TD>row2, field1 value</TD>
    <TD>row2, field2 value</TD>
   </TR>
   <TR>
   </TABLE>
   
   这个也是老外口中说的那个BUG了,让我们看一下具体怎么做的
   
   <%
   Set RS = conn.Execute("SELECT theValue,theText FROM selectOptionsTable ORDER BY theText")
   
   optSuffix = "</OPTION>" & vbNewLine
   valPrefix = "<OPTION Value='"
   valSuffix = "'>"
   opts = RS.GetString( , , valSuffix, optSuffix & valPrefix, "--error--" )
   ' Next line is the key to it!
   opts = Left( opts, Len(opts)-Len(valPrefix) )
   
   Response.Write "<SELECT ...>" & vbNewLine
   Response.Write valPrefix & opts
   Response.Write "</SELECT>"
   %>
   
   你用过这种方法么,实话,我可从没见过,也没听有人说起,:(
   
   附带一下,您如果想建立一个正确的表格的话,也就是我头上说的那个BUG,只要这样做就可以了:
   <%
   Set RS = conn.Execute("SELECT * FROM table")
   
   tdSuffix = "</TD>" & vbNewLine & "<TD>
   trPrefix = "<TR>" & vbNewLine & "<TD>"
   trSuffix = "</TD>" & vbNewLine & "</TR>" & vbNewLine & "<TR>" & vbNewLine
   opts = RS.GetString( , , tdSuffix, trSuffix & trPrefix, "--error--" )
   ' Next line is the key to it!
   opts = Left( opts, Len(opts)-Len(trPrefix) )
   
   Response.Write "<TABLE Border=1 CellPadding=5>" & vbNewLine
   Response.Write trPrefix & opts
   Response.Write "</TABLE>" & vbNewLine
   %>
   ------------------------------------------------------------------------
   再介绍一个完全不同的办法。。。(我看了快昏倒)
   
   <%
   SQL = "SELECT '<OPTION Value=''',value,'''>',text,'</OPTION>' FROM table ORDER BY text"
   Set RS = conn.Execute(SQL)
   Response.Write "<SELECT>" & vbNewLine & RS.GetString(,,"",vbNewLine) & "</SELECT>"
   %>
   
   你用过吗。。。
   
   看到了吗?可以直接从查询中返回结果。
   再进一步,您可以这样做(ACCESS下我试过)
   
   <%
   SQL = "SELECT '<OPTION Value=''' & value & '''>' & text & '</OPTION>' FROM table ORDER BY text"
   Set RS = conn.Execute(SQL)
   Response.Write "<SELECT>" & vbNewLine & RS.GetString(,,"",vbNewLine) & "</SELECT>"
   %>
   ……………………
   
   :(
   
   不多说了
   
   希望能对你有所帮助
   
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987