如何在 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)
或将<options>
直接写入页面..
<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,因为您正在向其中添加选项,所以每次打印它时,它会再次打印所有选项加一..还有,<%=rsReqDetails("AppReqSiteID")%>
是什么?另一个记录集?那个值应该用什么来检查?你的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 MVC 框架中调用 ajax 来显示 kendoDropDownList?