如何将选中的单选按钮值输出到标签

时间:2016-02-27 16:06:10

标签: asp.net vb.net gridview findcontrol

我得到了flip()的输出,我不知道我做错了什么。我使用findcontrol方法在Gridview中查找ID并将它们声明为radiobuttons,然后我尝试使用if语句为已选中的单选按钮分配值,然后将该值输出到标签。

vb代码

0

源代码

 Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click

    Dim numOutput As Integer

    For Each row As GridViewRow In GridView1.Rows
        Dim qID As Label = row.FindControl("QuestionID")
        Dim rd1 As RadioButton = TryCast(row.FindControl("answer1"), RadioButton)
        Dim rd2 As RadioButton = TryCast(row.FindControl("answer2"), RadioButton)
        Dim rd3 As RadioButton = TryCast(row.FindControl("answer3"), RadioButton)
        Dim rd4 As RadioButton = TryCast(row.FindControl("answer4"), RadioButton)

        If rd1.Checked = True Then
            numOutput = 1
        ElseIf rd2.Checked = True Then
            numOutput = 2
        ElseIf rd3.Checked = True Then
            numOutput = 3
        ElseIf rd4.Checked = True Then
            numOutput = 4
        End If

    Next
    lblOutput.Text = numOutput
End Sub

1 个答案:

答案 0 :(得分:0)

您的错误

我不知道您的代码有什么问题,因为我无法调试您的代码以查看您的VB代码会发生什么。如果您不知道如何调试代码,请查看有关调试的this YouTube video

我的建议

我建议您将所有复选框放在面板上并循环显示该控件的所有项目。我去检查每个控件是否是dataset。如果是,请将其投放到RadioButton并检查RadioButton是否已选中。如果是,则计数器可以显示在您的标签中。

检查计数器计数女巫RadioButton,也是您可以在标签上显示的输出。有关我的工作的更多信息,请参阅代码。

不要忘记在计数器上添加一个,否则它将保持相同的值。

这是VB代码:

RadioButton

将标签放在面板外面。请注意,如果标签位于面板内,则对后面的代码没有影响。循环将跳过它们,因为标签不是单选按钮的类型。但是当你向应用程序添加一些功能时,标签就在外面了。

这是ASP代码:

Dim counter As Integer = 0

For Each contr As Control In pnlAnswers.Controls 'loop over each control on the panel

    If TypeOf contr Is RadioButton Then 'Check if contr is a RadioButton 

        RadioButton rdb = CType(contr, RadioButton) 'if yes cast it to a RadioButton

        If rdb.Checked Then 'If checked

            lblOutput.Text = counter.ToString() 'Place the tag value on the output label
            Return

        End If

        counter += 1
    End If
Next

P.S。:我现在不需要在之前的更新中添加的标记。

代码清理

我也删除了这行代码:

<asp:Label runat="server" ID="QuestionID" Text='<%# Eval("QuestionID")%>' />
<asp:Label runat="server" ID="Question" Text='<%# Eval("Question")%>' /><br />

<asp:panel ID="pnlAnswers" runat="server">
    <asp:RadioButton GroupName="a" Text='<%# Eval("answer1")%>' runat="server" ID="answer1" /><br />
    <asp:RadioButton GroupName="a" Text='<%# Eval("answer2")%>' runat="server" ID="answer2" /><br />
    <asp:RadioButton GroupName="a" Text='<%# Eval("answer3")%>' runat="server" ID="answer3" /><br />
    <asp:RadioButton GroupName="a" Text='<%# Eval("answer4")%>' runat="server" ID="answer4" />
</asp:panel>

我找不到您使用此行的任何行,因此找到您的标签Dim qID As Label = row.FindControl("QuestionID") 太过分了。

注释

很久以前,我已经使用过VB.NET和ASP.NET网页表单,所以如果代码无效,请评论我。

<强> #SOreadytohelp