我试图在经典ASP中编写此代码但由于某些原因我无法将其运行。也许我错过了一些东西:
<select name="reseller" />
<option value="">Select a Reseller:</option>
<%
sql = "SELECT resellerid, company FROM resellers WHERE insidesales <> 'True' ORDER BY company ASC"
set rsResellers=conn.execute(sql)
do until rsResellers.eof
thisReseller = rsResellers("company")
if strReseller = thisReseller then thisSEL = " SELECTED='SELECTED'" else thisSEL = "" end if
response.write "<option value="""& rsResellers("company") &""""& thisSEL &">"& rsResellers("company") &"</option>"
rsResellers.movenext
loop
rsResellers.close
set rsResellers=nothing
%>
</select>
strReseller提出了一个问题:strReseller = rsRMA(&#34;经销商&#34;)。如果我做一个response.write strReseller,我得到一个值,所以我知道字符串不是空的。但由于某些原因,该选项不是&#34; SELECTED&#34;。
我知道我应该使用&#34; resellerid&#34;但是对于这个特定的项目,我不能接管一个包含数据的旧数据库,而且数据不会使用该ID。
答案 0 :(得分:1)
我会使用StrComp
而不是equals,也不会只使用Response.Write
编写每个选项。像这样的东西
<select name="reseller" />
<option value="">Select a Reseller:</option>
<% sql = "SELECT resellerid, company" &_
"FROM resellers WHERE insidesales <> 'True'" &_
"ORDER BY company ASC"
set rsResellers=conn.execute(sql)
do until rsResellers.eof
thisReseller = rsResellers("company")
if StrComp(strReseller, thisReseller, 1) = 0 then
thisSEL="selected='selected'"
else thisSEL=""
end if %>
<option value="<%=thisReseller %>" <%=thisSEL%> ><%=thisReseller %></option>
<% rsResellers.movenext
loop
rsResellers.close
set rsResellers=nothing %>
</select>
这将使您的检查不区分大小写,这可能是您出错的原因。