如何在 Classic ASP 的下拉列表中显示存储过程中的数据?

Posted

技术标签:

【中文标题】如何在 Classic ASP 的下拉列表中显示存储过程中的数据?【英文标题】:How to display data from stored procedure in a drop down in Classic ASP? 【发布时间】:2010-07-26 13:31:48 【问题描述】:

这与经典 ASP 代码有关。 页面获取特定 ProjectCode 的数据。

有一个通用文本字段显示所选项目代码的站点位置。我想将其更改为下拉,以便用户可以从可用选项(从数据库中获取)更改站点位置,然后保存它。此外,在页面加载时,应选择该特定条目的项目代码的站点位置。

我在我的页面中添加了以下代码,但它不起作用(肯定我是经典 ASP 的新手)。

    strSQL = "SP_GET_SiteLocation"
    Set rsSiteList = RunSQLQuery(strSQL)

    'show the list
    If Not rsSiteList.EOF Then
    Do While NOT rs.EOF
    SiteLocationList= SiteLocationList & "<option value="">" & rs("LOCATION") & "</option>"
    rs.MoveNext 

另外,点击保存按钮,我必须发送选择的下拉值来更新查询。

【问题讨论】:

【参考方案1】:

您为记录集变量使用了错误的名称..

您将其命名为rsSiteList,但您将其用作rs

Do While NOT rsSiteList.EOF
    SiteLocationList= SiteLocationList & "<option value="">" & rsSiteList("LOCATION") & "</option>"
    rsSiteList.MoveNext 

更新

您正在构建一个包含所有选项的字符串..

你应该在某个时候把它写在页面上..response.write(SiteLocationList)

或将&lt;options&gt;直接写入页面..

<select name="somename"><%
    Do While NOT rsSiteList.EOF
   %>
       <option value=""><%=rsSiteList("LOCATION")%></option>
   <%
         rsSiteList.MoveNext 
     Loop
   %>
</select>

更新 2

不知道为什么您不想在从记录集中读取选项时打印它们,而是更喜欢制作一个巨大的字符串并在最后打印它......这是同样的事情,但更干净..

下面应该选择匹配rsReqDetails("AppReqSiteID")的位置

<td>
<%
  strSQL="SP_EPAPM_GET_SiteLocation"
  Set rsSiteList=RunSQLQuery(strSQL)
  selectedValue = rsReqDetails("AppReqSiteID")
  If Not rsSiteList.EOF Then
    Do While NOT rsSiteList.EOF
       loc = rsSiteList("LOCATION")
       if loc <> selectedValue then
         optionOpen = "<option>"
       else
         optionOpen = "<option selected=""selected"">"
       end if
       optionClose = "</option>"
       SiteLocationList=SiteLocationList & optionOpen  & rsSiteList("LOCATION") & optionClose 
      rsSiteList.MoveNext 
    Loop
  End If
  %>
  <select id="SiteLocationList" NAME="SiteLocationList">
    <%response.write(SiteLocationList)%>
  </select>
</td>

一般来说,您需要注意 html 的嵌套,因为它会搞砸一切。此外,您还需要阅读一些关于 ASP 和 HTML 之间交互的内容...

【讨论】:

@RMN,更新答案..(你永远不会在页面中写选项 谢谢盖比。看来我离它越来越近了。我不想将字段添加为静态值。 “位置”是我从存储过程中获得的值,我需要在下拉列表中。我在 rsSiteList.MoveNext 上方添加了 response.write(SiteLocationList),它在下拉列表中显示了 3 个条目,全部在下拉列表之外的一行中。我还希望在 中选择的值作为下拉列表中的默认选择。 @RMN,不要从循环内部打印 SiteLocationList,因为您正在向其中添加选项,所以每次打印它时,它会再次打印所有选项加一..还有,&lt;%=rsReqDetails("AppReqSiteID")%&gt; 是什么?另一个记录集?那个值应该用什么来检查?你的rsSiteList 记录集在某处也有 id 值吗? 是的,它是另一个记录集,不,rsSiteList 没有 Id,它只有值(“位置”)。现在的情况类似于:对于 Project-ID '122',我在记录集“rsReqDetails”中有详细信息。项目 122 的“AppReqSiteID”是“二”。我希望下拉菜单显示“一”、“二”、“三”……默认情况下应选择“二”。这个下拉列表是我们现在正在尝试修复的。此外,如果我将选择更改为“一个”,它应该在单击“保存”按钮时将更改保存在数据库中。 好的,现在我可以看到下拉列表和其中的值,但是如何将选定的值(即值: )显示为此下拉列表中的默认选择。【参考方案2】:

你几乎明白了,你错过了“选择”标签:

    strSQL = "SP_GET_SiteLocation"  
Set rsSiteList = RunSQLQuery(strSQL)  

'show the list  
If Not rsSiteList.EOF Then  %>
<select><%Do While NOT rs.EOF SiteLocationList= SiteLocationList & "<option value="">" & rs("LOCATION") & "</option>"  
rs.MoveNext %>
</select>

【讨论】:

是的,这会显示下拉菜单,但下拉菜单是空的 :(

以上是关于如何在 Classic ASP 的下拉列表中显示存储过程中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用asp.net通过下拉列表搜索记录

如何根据特定条件隐藏/显示下拉列表项?

用asp如何实现下拉列表值筛选access数据库记录

如何通过在 ASP.NET MVC 框架中调用 ajax 来显示 kendoDropDownList?

来自数据库的数据不能显示在 ASP.NET MVC 的下拉列表中

如何通过 ajax 使用数据库数据填充 ASP.NET MVC 4 下拉列表