Выбор элементов в строке - PullRequest
0 голосов
/ 05 августа 2009

Я разрабатываю сайт для арендаторов, чтобы найти недвижимость. При регистрации они могут выбрать интересующие их типы недвижимости, например: Квартира или Дом.

Когда Арендатор входит в свою учетную запись, он может выполнить поиск свойств. Форма поиска заполняется значениями, которые они изначально вводили при регистрации, например: Город, Почтовый индекс и т. Д.

В форме также должны отображаться некоторые флажки с соответствующими флажками для Типов свойств, которые они выбрали при регистрации. У меня возникли некоторые проблемы с тем, как заставить это работать, и я подумал, есть ли кто-нибудь, кто мог бы исправить код для меня?

Я считаю, что мне нужно использовать оператор IN, чтобы соответствующие флажки были отмечены, если идентификаторы этих свойств находятся в столбце CustomerReqPropertyType. Столбец CustomerReqPropertyType имеет тип varchar (50), и, например, если пользователь выбрал «Квартира и дом», он сохраняется в строке как 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 ]

1 голос
/ 05 августа 2009

Чтобы флажок был отмечен, проверяемое свойство должно быть равно «проверено».

, например

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

Я подозреваю, что в вашем коде наборы записей rspropertytype и rstenantrequirements могут быть объединены в один набор записей, созданный из одного оператора SQL.

, например

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 также может быть упрощен.

, например

<%
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
%>
0 голосов
/ 05 августа 2009

Это действительно трудно понять. Во-первых, я бы разбил эту строку, где вы можете установить переменную и вывести ее на страницу. Я предполагаю, что вы пытаетесь установить флажок. Я хотел бы убедиться, что возвращаемое значение не является нулевым, предполагая, что это запрос, который просто возвращает тип свойства, и вы оставили его присоединенным к нему с таблицей, в которой есть описания, когда они установлены для рассматриваемого свойства. Я не вижу, чтобы вы когда-нибудь печатали флажок, поэтому он никогда не будет проверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...