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

ASP
对连串英文自动换行的解决方法 IE5.5
怎样写你自己的EMAIL组件(原理)
ASP中有关timeout超时的体会
用ASP实现从SQL Server导出数据到Access
ASP向NT域中加一个用户
ASP乱码的解决方法
关于 aspsmartupload 注册问题
利用XML不离开页面刷新数据
IIS 处理 SEARCH 请求漏洞
不用组件实现上载功能(1)
不用组件实现上载功能(2)
在网页中实现OICQ里的头像选择的下拉框
仅用xsl和asp实现分页功能
如何使用context()方法将数据置入表格(XML)
利用ASP从远程服务器上接收XML数据
将数据库里面的内容生成EXCEL
怎样在ASP里面创建统计图表
加密你的Access数据库
利用global.asp定时执行ASP
加密QueryString数据

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


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