连续选择项目

时间:2009-08-05 15:08:41

标签: sql asp-classic

我正在为租户开发一个寻找房产的网站。当他们注册时,他们可以选择他们感兴趣的房产类型,例如:公寓或住宅。

当租户登录他们的帐户时,他们可以搜索属性。搜索表单预填充了他们最初在注册时输入的值,例如:城市,邮政编码等。

表单还需要显示一些复选框,其中勾选了他们在注册时选择的属性类型的相关框。我有一些问题让这个工作,并想知道是否有人可以为我纠正代码?

我认为我需要使用'IN'语句,以便勾选相关的复选框,如果在CustomerReqPropertyType列中找到这些属性的ID。 CustomerReqPropertyType列是varchar(50),并且作为示例,如果用户选择了Apartment和House,则它在行中存储为2,4(因为存在具有属性类型的单独表。

这是我在页面上的代码;

<%
  While (NOT rspropertytype.EOF)
%>

    <li>
      <input type="checkbox" name="txtPropertyType" id="txtPropertyType" value="<%=(rspropertytype.Fields.Item("PropertyTypeID").Value)%>"<% If Not rstenantrequirements.EOF Or Not rstenantrequirements.BOF Then %><%If (Not isNull((rstenantrequirements.Fields.Item("CustomerReqPropertyType").Value))) Then If (CStr(rspropertytype.Fields.Item("PropertyTypeID").Value) = CStr((rstenantrequirements.Fields.Item("CustomerReqPropertyType").Value))) Then Response.Write("")%><% End If ' end Not rstenantrequirements.EOF Or NOT rstenantrequirements.BOF %> />
      <label for="txtPropertyType"><%=(rspropertytype.Fields.Item("PropertyTypeTitle").Value)%></label>
    </li>

<%
  rspropertytype.MoveNext()
Wend
If (rspropertytype.CursorType > 0) Then
  rspropertytype.MoveFirst
Else
  rspropertytype.Requery
End If
%>

我将非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

为了选中复选框,checked属性必须等于“checked”。

e.g。

<input type="checkbox" name="something" value="somethingElse" checked="checked" />

我怀疑在你的代码中,rspropertytype和rstenantrequirements记录集可以合并到一个SQL语句生成的一个记录集中。

e.g。

SELECT pt.*
     , CASE
         WHEN ISNULL(tr.CustomerReqPropertyType,0) = 0 THEN 0 
         ELSE 1 END AS [checked]
FROM propertytype AS [pt]
LEFT JOIN tenantrequirements AS [tr]
    ON pt.PropertyTypeID = tr.CustomerReqPropertyType
WHERE ...

然后您的ASP代码也可以简化。

e.g。

<%
While (NOT rs.EOF)
    Dim pID : pID = rs("PropertyTypeID")
    Dim pTitle : pTitle = rs("PropertyTypeTitle")
    Dim checked : checked = "" : If (rs("checked") = 1) Then checked = "checked"
%>
    <li>
        <input type="checkbox" name="txtPropertyType" id="txtPropertyType<%=pID%>" value="<%=pID%>" checked="<%=checked%>" />
        <label for="txtPropertyType<%=pID%>"><%=pTitle%></label>
    </li>
<%
    rs.MoveNext()
Wend
%>

答案 1 :(得分:0)

这真的很难理解。首先,我将该行拆分为您可以设置变量并将其打印到页面的位置。我假设您正在尝试设置复选框。我要做的是确保返回的值不为null,假设这是一个只返回属性类型的查询,并且当它们为相关属性设置时,您将其与表中包含描述的表连接起来。我没有看到你打印到复选框,所以它永远不会被检查。