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

ASP
asp分页(自己整理的2个分页程序)
ASP常用的系统配置函数
雨哲防采集策略之列表篇
雨哲浅谈关于防采集而不影响收录内容篇
asp数据库连接函数
ajax XMLHTTP Post Form时的表单乱码综合解决
ASP注入详细命令40条
用ASP实现MSSQL用户密码破解
ASP创建对象的两种方法比较
ASP字符串转换为整形、双精度型、布尔
ASP计算str2在str1中出现的次数
asp采集抓取网上房产信息的代码
ASP注册登陆实例代码
ASP中使用FileSystemObject时提高性能的方法
分享一个好东东,动态Include文件 (Dynamic File Includes)
解决 JScript 中使用日期类型数据时出现类型错误的问题
在ASP里面创建GUID
在JScript中使用缓存技术的实际代码
ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验
海阳2006+功能中的潜水王

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


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