从asp转发器获得正确的控制

时间:2018-03-09 11:52:41

标签: asp.net vb.net

所以我现在正在使用ASP.NET和VB.NET。以下是我显示视图的方式:

<tr>
    <td colspan="2">&nbsp;
        <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="100%" border="0">
            <TR>
                <TD>
                    <asp:repeater id="repVKM" runat="server">
                        <ItemTemplate>
                            <br>
                            <input id="radioBtnID" type="radio" name="radVKM" value='<%# DataBinder.Eval(container.Dataitem, "BJBVKMID") %>'>
                            <%# DataBinder.Eval(Container.DataItem, "BJBVKM") %>
                        </ItemTemplate>
                    </asp:repeater>
                </TD>
            </TR>
        </TABLE>
    </td>
</tr>  

以下是我如何填充转发器中的无线电按钮:

Me.repVKM.DataSource = clsInschrijving2elijnManager.GetVoorkeurMateries(False)
Me.repVKM.DataBind()  

以下是我试图查看检查哪个单选按钮的方法:

Dim voorkeurMateries = repVKM.Items
Dim selectieVKM As String
For Each item As RepeaterItem In voorkeurMateries
    Dim rb As RadioButton
    rb = item.FindControl("radioBtnID")
    If rb.Checked Then
         selectieVKM = rb.Text
         Exit For
    End If
Next  

它对“rb”的值给出“Nothing”错误(如空错误),因为看起来他找不到正确的控件?我不太了解VB.NET和ASP.NET,所以我似乎无法找到解决方案。

1 个答案:

答案 0 :(得分:1)

您的代码存在两个问题。首先,RadioButton上没有runat="server"标签,因此在后面的代码中永远无法检测到它。

其次,你正在寻找一个RadioButton控件,而在HTML中你有一个普通的html电台。

因此要么将runat = server添加到现有的RadioButton

<input id="radioBtnID" runat="server" type="radio" name="radVKM">

并将后面的代码更改为

Dim radio As HtmlInputRadioButton = CType(item.FindControl("radioBtnID"),HtmlInputRadioButton)

或者在Repeater中使其成为“真正的”aspnet控件。然后循环中的代码是正确的。

<asp:RadioButton ID="RadioButton1" runat="server" Text='<%# Eval("radVKM") %>' />