我已经动态生成了radiobuttons,当我点击所选按钮时,如果文本框(textbox2)中的动态radiobuttons,我如何获取id。 下面的代码只适用于生成控件(无线电和文本框),我的意思是btnload工作,但btnselected不起作用(动态控件只是消失,textbox2显示没有。)。
<html>
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Panel ID="container" runat="server">
</asp:Panel>
<div>
<asp:Button ID="btnload" runat="server" Text="Load" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
no of loops</div>
<asp:Button ID="btnselected" runat="server" Text="selected" />
<asp:TextBox ID="TextBox2" runat="server" style="margin-top: 26px"></asp:TextBox>
</form>
</body>
</html>
Protected Sub getradioId_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnload.Click
Dim tbl As New Table
tbl.Width = 500
Dim i As Integer = 0
Do Until i = TextBox1.Text
Dim tblrow As New TableRow
tblrow.Width = 80%
Dim tblcellrad As New TableCell
tblcellrad.Width = 100
Dim tblcellname As New TableCell
tblcellname.Width = 300
Dim cand As New TextBox
cand.ID = i
i += 1
Dim rad As New RadioButton 'generate controls (radiobuttons and textbox)
rad.GroupName = "one"
rad.ID = i
rad.Text = "rad" & i
cand.Text = "candidate " & i.ToString
If i Mod 2 = 1 Then 'set row colour
tblrow.Style.Add("background-color", "#EEEEEE")
Else
tblrow.Style.Add("background-color", "#E0E0E0")
End If
tblcellrad.Controls.Add(rad) 'add controls to cells
tblcellname.Controls.Add(cand)
tblrow.Controls.Add(tblcellname) 'add cells to rows
tblrow.Controls.Add(tblcellrad)
tbl.Controls.Add(tblrow) 'add row to table
container.Controls.Add(tbl)
Loop
End Sub
Protected Sub btnselected_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnselected.Click
Dim radios = Controls.OfType(Of RadioButton).AsQueryable()
For Each r As RadioButton In radios
If r.Checked Then
TextBox2.Text = r.ID.ToString
End If
Next
End Sub
答案 0 :(得分:1)
如果btnselected_Click
是选择发生时触发的事件,那么您可以在执行以下操作时强制转换sender
对象:
Dim selectedRdo = DirectCast(sender, RadioButton)
答案 1 :(得分:0)
您每次都在重新创建按钮吗?必须在每次回发时重新创建动态控件。它们需要在正确的时间创建,通常OnLoad事件是我将使用的最后一个事件(Page_Load为时已晚)。您必须这样做才能使它存在并且及时绑定到视图状态以便调用第二个回发事件,其中发布的数据与控件匹配。他们每次创建时都必须具有完全相同的ID,否则它就无法工作。
现在,在你的情况下,将单选按钮与文本框匹配应该很漂亮,因为你的文本框有一个id,这是一个整数,你的radiobutton也有一个id,它与textbox相同。 / p>
第一个问题是确保每次都正确地创建控件。