【问题标题】:Retrieving selected values from Randomly created dynamic RadioButtonList from DB从数据库中随机创建的动态 RadioButtonList 中检索选定的值
【发布时间】:2016-04-12 16:28:27
【问题描述】:

我正在尝试制作问卷并从数据库中获取问题的单选按钮列表的选定值。单选按钮列表是在后面的代码中动态生成的。 Radiobuttonlist 的 Question 和列表项是随机显示的。

我要做的是在单击按钮时将用户的答案与 DB 的答案键进行比较。所以,我需要取radiobuttonlist.selected 的值。

在尝试检索所选值时,我收到了空值。我认为这是由于问题和单选按钮列表是随机显示的,因此回调它的 id 已更改。有什么办法可以取它的选定值吗?

这是我目前的代码,

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    LoadControls2()
End Sub

Private Sub LoadControls2()
    keyList = New ArrayList
    Dim dtTable As DataTable
    'Select and randomize the Question taken from DB
    Dim cmd As New SqlCommand("Select TOP 3 [Question], [Choice], [Answer] from tbl_Question ORDER BY NEWID()")
    dtTable = ExecuteQuery(cmd, "SELECT")
    lblMsg.Text = strMsg
    For i As Integer = 0 To dtTable.Rows.Count - 1
        Dim tmpRBL As Object = New RadioButtonList
        Dim tmpLBL As Object = New Label

        tmpLBL.ID = "Label" & i
        tmpLBL.Text = i + 1 & ". " & dtTable.Rows(i)(0).ToString()
        tmpLBL.CssClass = "forLabel"

        tmpRBL.ID = i & "rbl"
        tmpRBL.CssClass = "forRadio"

        'Radnom the multiple choice
        Dim temp() As String = dtTable.Rows(i)(1).ToString().Split(New Char() {";"}, StringSplitOptions.RemoveEmptyEntries)
        Dim rnd As New System.Random
        Dim MyRandomArray = temp.OrderBy(Function() rnd.Next)
        For x As Integer = 0 To MyRandomArray.Count - 1
            Dim tmpItem As Object = New ListItem(MyRandomArray(x))
            tmpRBL.Items.Add(tmpItem)
        Next

        tmpRBL.RepeatLayout = RepeatLayout.Flow
        tmpRBL.RepeatDirection = RepeatDirection.Vertical

        PlaceHolder1.Controls.Add(tmpLBL)
        PlaceHolder1.Controls.Add(tmpRBL)
        PlaceHolder1.Controls.Add(New LiteralControl("</br>"))

        keyList.Add(dtTable.Rows(i)(2).ToString())
    Next
    'Store the answer Key
    Session("ArrayKey") = keyList

End Sub

这部分为空,

Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
    Dim majstor_rbl(3) As String
    Dim arrayKey As ArrayList = New ArrayList
    arrayKey = Session("ArrayKey")

    For i As Integer = 0 To 2
        RadioButtonList = TryCast(PlaceHolder1.FindControl(i & "rbl"), RadioButtonList)
        majstor_rbl(i) = RadioButtonList.SelectedValue 'got null in here

    Next

End Sub

当我尝试从用户那里获取Radiobuttolist.SelectedValue 时,我总是得到null,除了之前出现的问题和单选按钮列表。 有什么建议我应该怎么做? 提前致谢。

【问题讨论】:

    标签: c# asp.net vb.net radiobuttonlist dynamic-controls


    【解决方案1】:

    尝试使用Request.Form()访问值,

    Request.Form(RadioButtonList.UniqueID)
    

    【讨论】:

    • 在调用 selectedvalue 时,您的意思是 txt = Request.Form("RadioButtonList") 吗?我已经尝试过了,但它仍然产生 null
    • 是的,实际上动态创建的控件的viewstate不保持。所以我们需要从 Request 对象中访问它们。
    • 但是,它仍然检索到null,
    • 您是否选择了任何值?
    • 是的,已经。我更改了上面的代码 majstor_rbl(i) = RadioButtonList.SelectedValue --> majstor_rb(i) = request.form("radiobuttonlist")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多