динамически создаваемый радиобуттонлист "не объявлен" - PullRequest
0 голосов
/ 22 февраля 2011

Я динамически создаю таблицу, которая помещает динамически создаваемый список радиобуттон в каждую строку.

Затем я хочу отобразить результаты на странице при нажатии кнопки отправки.

ЯПолучение сообщения об ошибке, в котором говорится, что

'question1' не объявлено

Почему это может происходить ??Я включил весь свой код ниже.

Код сзади:

Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)

    For i As Integer = 1 To 3
        Dim TableRow As New TableRow()
        Dim TableRowCell_1 As New TableCell()
        TableRowCell_1.Text = i
        Dim TableRowCell_2 As New TableCell()

        TableRow.Cells.Add(TableRowCell_1)
        TableRow.Cells.Add(TableRowCell_2)
        QuestionnaireTable.Rows.Add(TableRow)

        Dim question As New RadioButtonList
        question.ID = "question" & i
        question.RepeatColumns = "2"
        question.Items.Insert(0, new listitem("", "1"))
        question.Items.Insert(1, new listitem("", "2"))
        TableRowCell_3.Controls.Add(question)
    Next

End Sub

Sub btnSendFeedback_Click(sender as Object, e as EventArgs)
    Dim question1 As RadioButtonList = DirectCast(Page.FindControl("question1"), RadioButtonList)
    Dim question2 As RadioButtonList = DirectCast(Page.FindControl("question2"), RadioButtonList)
    Dim question3 As RadioButtonList = DirectCast(Page.FindControl("question3"), RadioButtonList)
    Response.write(question1.SelectedValue & " - " & question2.SelectedValue & " - " & question3.SelectedValue)
End Sub

Тело:

<asp:Table runat="server" ID="QuestionnaireTable" />

<asp:Button OnClick="btnSendFeedback_Click" runat="server" Text="Submit..." ID="submitbutton" />    

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Как я вижу, вы не объявляли это где-либо:)

Поскольку "вопрос1" - это ваш идентификатор, вы должны найти его с помощью FindControl.

Page.FindControl(myId)

Вы можете определитьэто в текущем объекте для лучшего использования, если у вас есть только 3 элемента.

private question1 as RadioButtonList
private question2 as RadioButtonList

Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
     me.question1 = new RadioButtonList
End Sub

Sub btnSendFeedback_Click(sender as Object, e as EventArgs)
        dim value = me.question1.selectedValue
End Sub

Или вы можете сделать что-то вроде этого

private rbls as new List(of RadioButtonList)

Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
     dim list1 as new RadioButtonList
     list.items.add...
     rbls.add(list)
End Sub

Sub btnSendFeedback_Click(sender as Object, e as EventArgs)
        For Each _item in Me.rbls
              Response.write(_item.SelectedValue)
        End For
End Sub
1 голос
/ 22 февраля 2011

Когда вы объявляете свои элементы управления в разметке, Visual Studio и ASP.NET делают так, чтобы вы могли получить доступ к этому элементу управления в выделенном коде.

Когда вы объявляете элемент управления динамически, как это, вам нужно сделать доступным из кода.

Есть несколько способов сделать это, возможно, самый простой из них:

Dim question1 As RadioButtonList = DirectCast(Page.FindControl("question1"), RadioButtonList)
...