Динамические флажки на классической странице asp

У меня возникли проблемы с динамическим созданием флажков на странице .asp. Я использую следующий код внутри ячейки таблицы (примечание: rsMaint — это набор записей):

<%
    if not rsMaint.EOF then     
    rsMaint.moveFirst

    index = 1
%>
    <%
        do while not rsMaint.EOF                
    %>
    <% 
        Response.Write(CreateLabel(rsMaint.fields.getValue("name"),0) )         
        Response.Write("<INPUT type=""checkbox"" id=cb" & index & " value=" & rsMaint.fields.getValue("template_id") & ">")

            rsMaint.moveNext()  
            index = index + 1
            loop
    %>

Это работает, чтобы создать мои флажки, и я могу просмотреть исходный код и увидеть, что у них есть идентификаторы cb1, cb2, cb3 и т. д. Я получаю сообщение об ошибке объекта не существует, если я пытаюсь сделать:

if cb1.getChecked() = true Then
...
end if 

person Curtis    schedule 26.05.2011    source источник
comment
Что означает cb1.getChecked()? Где вы это называете?   -  person Tomalak    schedule 27.05.2011
comment
Кроме того, можете ли вы рассказать нам, что такое rsMaint (потому что, как вы его используете, это не ADO)?   -  person Tomalak    schedule 27.05.2011
comment
getChecked() - это метод, который я видел на других страницах, чтобы проверить, установлен ли флажок, хотя теперь я вижу, что это, вероятно, метод, принадлежащий флажку времени разработки interdev. Также rsMaint — это набор записей ADO, который получает значения из оператора select.   -  person Curtis    schedule 27.05.2011
comment
@curtis: Что заставляет вас думать, что будет объект cb1? Кажется, где-то пропущен шаг.   -  person Tomalak    schedule 27.05.2011
comment
Когда моя страница загружается, на ней создаются нужные флажки, и есть один с идентификатором cb1. Я могу получить доступ к флажкам, которые я выпадаю с помощью своего набора инструментов, как это. В asp.net я бы использовал метод FindControl(), чтобы найти элемент управления по его идентификатору. Как правильно это сделать в asp?   -  person Curtis    schedule 27.05.2011
comment
Эм, нет. В классическом ASP не существует волшебной среды, которая создает эти элементы управления за вас. Вы должны оценить содержимое коллекции Request() вручную, чтобы узнать состояние полей формы после публикации формы. И это работает по имени, а не по id.   -  person Tomalak    schedule 27.05.2011


Ответы (1)


<%
  rsMaint.moveFirst
  index = 1

  While Not rsMaint.EOF                
    val = rsMaint.fields.getValue("template_id")

    Response.Write(CreateLabel(rsMaint.fields.getValue("name"),0) )         
    Response.Write("<INPUT type=""checkbox"" id="""cb" & index & """" & _
                   " name="""checkbox_" & index & """" & _
                   " value=""" & Server.HTMLEncode(val) & """>")

    rsMaint.moveNext()  
    index = index + 1
  Wend
%>

Позже, когда пользователь отправил форму обратно, вы можете сделать

<%
  If Request("checkbox_1") > "" Then 
    ''# ...
  End If
%>

Обратите внимание, что вы не должны НИКОГДА выводить значение данных без предварительного HTML-кодирования.

person Tomalak    schedule 26.05.2011