问题描述
我正在开发一个教师评估软件。
我有一个域,用户应该从下拉列表中选择,当用户选择特定域时,软件会显示所选域中的所有条件,每个条件都是动态创建的,并有 4 个单选按钮(条件是问题和单选按钮是答案)。
我的问题是当我从任何条件的单选按钮列表中选择一个单选按钮时,代码只能看到最后一个。
我使用每个循环来循环遍历所有单选按钮并检查是否选择了任何一个,如果选择了任何人,则标签文本将是单选按钮文本问题是当我选择任何人时,标签文本将是其条件的最后一个单选按钮。
自动回发是真的,我使用添加处理程序来更改单选按钮的选定索引 将 radlist 调暗为 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
结束课程
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)