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

ASP
Access 2000 数据库 80 万记录通用快速分页类
Microsoft JET Database Engine 错误 ''80004005'' 未指定的错误的完美解决方法
收藏的ASP常用的函数集
asp分页的一个类
ASP开发网页牢记注意事项
ASP下操作Excel技术总结分析
ASP数据岛操作类
ASP经典分页类
asp论坛在线人数统计研究
ASP调用SQL SERVER存储程序
asp输出bmp
ASP连接数据库的全能代码
ASP面向对象编程探讨及比较
web文件管理器的后续开发
一小偷类!!有兴趣的可以看看
利用ASP实现事务处理的方法
大数量查询分页显示 微软的解决办法
如何把ASP编写成DLL
asp实现树型结构
超级ASP大分页_我的类容我做主

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 229 ::
收藏到网摘: 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下我试过)