繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM