
[英]How do I access checkboxList selected values after postback if they are rotated?
[英]how can i keep the values of selected radiobuttons after postback
我正在开发教师评估软件。
我有一个域,用户应该从下拉列表中选择 select,当用户 select 是特定域时,软件会显示所选域中的所有标准,并且每个标准都是动态创建的,并且有 4 个单选按钮(标准是一个问题,单选按钮是答案)。
我的问题是当我 select 一个单选按钮从任何标准的单选按钮列表中的代码只看到最后一个。
我用每个循环遍历所有单选按钮并检查是否选择了任何一个,如果选择了任何人,则 label 文本将是单选按钮文本问题是当我 select 任何人 ZD304BA20E96D87411588EEABAC8 的文本将是最后一个收音机的文本其标准的按钮。
自动回发是真的,我使用添加处理程序来更改单选按钮的选定索引 Dim radlist As RadioButtonList
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Dim str As String
Dim con As New SqlConnection
Dim cmdcount As New SqlCommand
Dim allcrit As New SqlCommand
str = "Data Source=SAYMIX\SAMI_SQL_SERVER;Initial Catalog=TES1;Integrated Security=True"
con = New SqlConnection(str)
con.Open()
cmdcount = New SqlCommand("SELECT COUNT(critid) FROM Criteria WHERE Criteria.did=" + DropDownList3.SelectedValue, con)
Dim count As Int16
count = cmdcount.ExecuteScalar()
allcrit = New SqlCommand("SELECT Criteria.critid FROM Criteria WHERE Criteria.did=" + DropDownList3.SelectedValue, con)
Dim rdr As SqlDataReader = allcrit.ExecuteReader()
Dim critarr(count) As Int16
If rdr.HasRows Then
Try
For x As Integer = 0 To count - 1
rdr.Read()
critarr(x) = rdr("critid")
Dim criteria = createcriteria(critarr(x))
createquestions(criteria.ID)
Next
rdr.Close()
Catch ex As Exception
End Try
End If
con.Close()
End If
End Sub
Private Function createcriteria(critid As Int16)
Dim con As New SqlConnection
Dim str As String
str = "Data Source=SAYMIX\SAMI_SQL_SERVER;Initial Catalog=TES1;Integrated Security=True"
con = New SqlConnection(str)
con.Open()
Dim cmdcritdesc As New SqlCommand
Dim cmdcritid As New SqlCommand
cmdcritdesc = New SqlCommand("SELECT critdesc FROM Criteria WHERE critid = '" & critid & "' ", con)
Dim criteria As Label = New Label()
criteria.Text = cmdcritdesc.ExecuteScalar() + "<br/>"
criteria.ForeColor = Drawing.Color.Red
criteria.Font.Size = 14
criteria.Font.Bold = True
cmdcritid = New SqlCommand("SELECT Criteria.critid FROM Criteria WHERE Criteria.critid='" & critid & "' ", con)
criteria.ID = Convert.ToInt16(cmdcritid.ExecuteScalar())
Dim Panel1 As Panel = New Panel()
Panel1.Controls.Add(criteria)
lv.Controls.Add(Panel1)
Return criteria
End Function
Private Function createquestions(crid As Int16)
Dim con As New SqlConnection
Dim cmdqvalue As New SqlCommand
Dim cmdquestdesc As New SqlCommand
Dim cmdquestid As New SqlCommand
Dim questcount As New SqlCommand
Dim str As String
str = "Data Source=SAYMIX\SAMI_SQL_SERVER;Initial Catalog=TES1;Integrated Security=True"
con = New SqlConnection(str)
con.Open()
questcount = New SqlCommand("SELECT COUNT(qid) FROM quest WHERE quest.critid= '" & crid & "' ", con)
Dim qc As Int16 = questcount.ExecuteScalar()
Dim qid(3) As Integer
cmdquestid = New SqlCommand("SELECT qid FROM quest WHERE critid = ALL (SELECT critid FROM quest WHERE critid = '" & crid & "' )", con)
Dim dr As SqlDataReader = cmdquestid.ExecuteReader()
If dr.HasRows Then
Try
For x As Integer = 0 To 3
dr.Read()
qid(x) = dr("qid")
Next
dr.Close()
Catch ex As Exception
End Try
End If
radlist = New RadioButtonList()
For j As Integer = 0 To qc - 1
cmdquestdesc = New SqlCommand("SELECT quest.qdesc FROM quest WHERE quest.qid= '" & qid(j) & "' ", con)
cmdqvalue = New SqlCommand("SELECT quest.qvalue FROM quest WHERE quest.qid= '" & qid(j) & "' ", con)
dr.Close()
Dim qdesc As String = cmdquestdesc.ExecuteScalar()
Dim qvalue As Int16 = cmdqvalue.ExecuteScalar()
Dim quest As Label = New Label()
quest.ID = qvalue
quest.Text = qdesc
radlist.AutoPostBack = True
radlist.EnableViewState = True
radlist.Items.Add(New ListItem(qdesc.ToString(), quest.ID.ToString()))
AddHandler radlist.SelectedIndexChanged, AddressOf check
Dim Panel1 As Panel = New Panel()
Panel1.Controls.Add(radlist)
lv.Controls.Add(Panel1)
Next
Dim lit As Literal = New Literal()
lit.Text = "<br/>"
lv.Controls.Add(lit)
End Function
Protected Sub check(ByVal sender As Object, ByVal e As EventArgs)
Dim rbl As RadioButtonList = CType(sender, RadioButtonList)
For Each rb As ListItem In rbl.Items
If rb.Selected = True Then
Label1.Text = rb.Text
End If
Next
End Sub
结束 Class
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.