2016-04-12 13 views
0

Bir soru sormaya çalışıyorum ve veritabanından seçilen bir sorunun radiobuttonlist değerini elde etmeye çalışıyorum. Radyo düğmesi, arkasındaki kodda dinamik olarak oluşturuldu. Radiobuttonlist için soru ve liste öğesi rastgele görüntülenmiştir.Seçili değerleri almak için Rastgele oluşturulmuş dinamik RadioButtonList'den DB

Yapmaya çalıştığım şey, düğmeyi tıkladığınızda kullanıcının yanıtını DB'den gelen yanıtla karşılaştırmaktır. Bu yüzden, radiobuttonlist.selected değerini almam gerekiyor.

Seçilen değeri almaya çalışırken, boş değer aldım. Bence bu soruya bağlıydı ve radiobuttonlist rastgele görüntüleniyordu, dolayısıyla geri arama id olarak değiştirildi. Seçilen değerini nasıl alacağın bir yolu var mı? İşte

, şimdiye kadar benim kodudur

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 
bu bölümünde

Got null, ben kullanıcıdan Radiobuttolist.SelectedValue almaya çalıştı

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 

, hep soru haricinde null var ve daha önce görüntülenen radyo düğmesi listesi. Herhangi bir öneri ne yapmalıyım? Şimdiden teşekkürler.

cevap

1

Request.Form(RadioButtonList.UniqueID) 
+0

Eğer txt = Request.Form ("RadioButtonList") SelectedValue demek gibi bir şey demek istedi, Request.Form() kullanarak erişim değerine deneyin? Denedim ama yine de –

+0

null üretiyor, aslında dinamik olarak oluşturulan kontrolün görünümleri korunmuyor. Bu yüzden onlara Request nesnesinden erişmemiz gerekiyor. –

+0

Ama yine de sıfır, –

İlgili konular