【发布时间】: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