2016-04-12 26 views
0

私はアンケートを作成し、質問のradiobuttonlistの選択された値をデータベースから取得しようとしています。 radiobuttonlistはコードの中で動的に生成されました。 Radiobuttonlistの質問とリスト項目がランダムに表示されました。DBから無作為に作成された動的RadioButtonListから選択した値を取得します

私がしようとしているのは、ボタンをクリックしたときに、DBの回答キーとユーザーの回答を比較することです。だから、私はradiobuttonlist.selected値を取る必要があります。

選択した値を取得しようとすると、null値が返されました。私はそれが質問とラジオボタンリストのためにランダムに表示されたと思うので、それを呼び出すための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 
この部分の

ガットヌル、私は、ユーザーからのRadiobuttolist.SelectedValueを撮ってみました

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 

が、私はいつも疑問を除くnullを得ました前に現れたラジオボタンリスト。 私は何をすべきですか? ありがとうございます。

答えて

1

Request.Form(RadioButtonList.UniqueID) 
+0

あなたはTXT =のRequest.Form( "RadioButtonListの")SelectedValueのを呼び出すようなものを意味した、Request.Form()を使用してアクセス値に試してみてください?私はそれを試したが、それでもnullを生成する –

+0

はい、実際に動的に作成されたコントロールのviewstateは維持されません。そのため、Requestオブジェクトからアクセスする必要があります。 –

+0

しかし、それでもnullを取得しました –

関連する問題