ASP.NET中的输入型Radio事件

92dk7w1h  于 2023-06-25  发布在  .NET
关注(0)|答案(1)|浏览(134)

我有一个表生成的代码背后与输入类型单选按钮。看起来是这样的

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim sbTable As New StringBuilder

    Dim btn As HtmlInputRadioButton = New HtmlInputRadioButton()
    btn.Attributes.Add("onclick", "addLayer()")
    ' cell.Controls.Add(btn)

    sbTable.Append("<table border='1px solid black' id='myTable' runat='server'> ")
    sbTable.Append("<thead>")
    sbTable.Append("<tr>")
    sbTable.Append("<th >No.</th>")
    sbTable.Append("<th >Division</th>")
    sbTable.Append("<th >Show</th>")


    sbTable.Append("</thead>")
    sbTable.Append("<tbody>")


    sbTable.Append("<tr>")
    sbTable.Append("<td>1</td>")
    sbTable.Append("<td>A</td>")
    sbTable.Append("<td><input type='radio' name='Overall' runat='server' id='radioA' value='A'  OnServerChange='RadioButton_CheckedChanged' AutoPostBack='true'/></td>")
    sbTable.Append("</tr>")



    sbTable.Append("<tr>")
    sbTable.Append("<td>2</td>")
    sbTable.Append("<td>B</td>")
    sbTable.Append("<td><input type='radio' name='Overall' runat='server' id='radioB' value='B'  OnServerChange='RadioButton_CheckedChanged' AutoPostBack='true'/></td>")
    sbTable.Append("</tr>")


    sbTable.Append("</tbody>")
    sbTable.Append("</table>")



    phTrendUk.Controls.Add(New Literal() With {.Text = sbTable.ToString})



End Sub

我想有一个事件,当我点击单选按钮,它将改变标签值

Protected Sub RadioButton_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    idlbl.Text = "Click"
End Sub

我已经添加了RadioButton_CheckedChanged,但它没有工作。有谁能帮上忙这个案子吗?

hof1towb

hof1towb1#

你当然能做到。
问题是RadioButtonList的选项列表“从哪里来”?
此外,您不需要一个表,也不需要所有的代码来生成标记。只需从工具箱中拖放单选按钮列表到您的Web窗体上即可。
你现在有这个:

<asp:RadioButtonList ID="RadioButtonList1" runat="server">

        </asp:RadioButtonList>

在窗体视图中,然后使用以下内容:

所以,我们现在可以使用设计器编辑/添加项目。
所以,我们加1,和除法的文本
总的来说是2,
所以,这个:

现在,当然上面创建了这个标记:

<asp:RadioButtonList ID="RadioButtonList1" runat="server"
            AutoPostBack="true">
            <asp:ListItem Value="1">Division</asp:ListItem>
            <asp:ListItem Value="2">Overall</asp:ListItem>
        </asp:RadioButtonList>
        <br />

        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>

所以,我们有autostback = true,以及上面的两个选项。
因此,属性表,然后事件选项卡,并双击SelectedIndexChanged事件,从这里:

现在,我们可以编写代码来设置下面的标签的值。

Protected Sub RadioButtonList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RadioButtonList1.SelectedIndexChanged

    Dim strResult As String = ""

    If RadioButtonList1.SelectedIndex = -1 Then
        strResult = "No selection made"
    Else
        strResult = "Value selected = " & RadioButtonList1.SelectedItem.Value &
                    " Text selected value = " & RadioButtonList1.SelectedItem.Text
    End If

    Label1.Text = strResult

End Sub

此外,我们可以设置按钮垂直或水平。
我们甚至可以在按钮上添加一些样式。
所以,我们现在有这个:

你当然可以使用代码来填写选项列表。
像这样说:

<asp:RadioButtonList ID="RadioButtonList1" runat="server"
            AutoPostBack="true"
            DataValueField="ID"
            DataTextField="HotelName">
        </asp:RadioButtonList>
        <br />

在我们的页面加载,然后这段代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then
        LoadButtonList
    End If
End Sub

Sub LoadButtonList()

    Dim strSQL As String =
        "SELECT  ID, HotelName FROM tblHotelsA ORDER BY HotelName"

    Using conn As New SqlConnection(My.Settings.TEST4)
        Using cmdSQL As New SqlCommand(strSQL, conn)
            conn.Open()
            RadioButtonList1.DataSource = cmdSQL.ExecuteReader
            RadioButtonList1.DataBind()
        End Using
    End Using
End Sub

所选索引的相同代码发生了更改,我们得到了这个:

因此,使用单选按钮列表。
您不仅可以使用编辑器添加选项列表,第二个示例还展示了如何使用数据库来驱动选项。
请注意,每个选项都有一个显示文本值,然后是一个隐藏的选项值,我想也可以使用选项的索引。
在后面的代码中,如果您不想硬编码标记,您可以自由地使用代码添加选项,或者按照第二个示例,从数据库中提取选项。
或者,可能从代码中,您需要选择1到5。
所以,然后这个:

<asp:RadioButtonList ID="RadioButtonList1" runat="server"
            AutoPostBack="true">
        </asp:RadioButtonList>

然后在加载时说这段代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then
        For i = 1 To 5
            Dim OneChoice As New ListItem("Choice " & i, i)
            RadioButtonList1.Items.Add(OneChoice)
        Next
    End If
End Sub

现在我们有了这个

因此,您可以使用内置的项目编辑器,可以提供RB列表数据,甚至可以简单地在代码中循环和添加选项。

相关问题