当前位置: 首页 > 图文教程 > 网络编程 > ASP > 介绍一个制作下拉菜单完全不同的办法

ASP
开辟一条自由ASP快车道
用XML结合数据库,给服务器减负。
纯编码实现数据库的建立或压缩
多个表单和多个图片一起上传完美解决方案
列表项可上下移动的Multiple列表
模拟QQ的下拉列表选择图象
利用FSO取得BMP,JPG,PNG,GIF文件信息(大小,宽、高等)
二级域名原理以及程序,申请即可开通.
利用ASP+XML架设在线考试系统
ASP项目中的通用条件查询模块
一个为字符串中的网址加上链接的程序例子
用Agent+ASP技术制作语音聊天室
多表单域无组件文件上传的例子
使用xmlhttp为网站增加股市行情查询功能
用ASP开发WEB日期选择器
javascript+HTML仿造VB里的MonthView控件
使用xmlHttp结合ASP,实现网页的异步调用
调用DirectX的组件实现的时钟
在ASP页里面注册DLL的VBScript CLASS
ASP程序界面的多语言支持

ASP 中的 介绍一个制作下拉菜单完全不同的办法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 168 ::
收藏到网摘: n/a

       我是头一回知道这个方法,以前从没听用过,以前如果我从数据库里读出内容来制作下拉菜单的话都是用循环来做的,现在,让我们来看一下老外的办法。
  
  利用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下我试过)