如何在回发后保留所选单选按钮的值

问题描述

我正在开发一个教师评估软件。

我有一个域,用户应该从下拉列表中选择,当用户选择特定域时,软件会显示所选域中的所有条件,每个条件都是动态创建的,并有 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 (将#修改为@)