【问题标题】:Getting the correct control from an asp repeater从 asp 中继器获得正确的控制
【发布时间】:2018-03-09 20:43:13
【问题描述】:

所以我现在正在使用 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 不太了解,所以我似乎找不到解决方案。

【问题讨论】:

  • 您使用的是 VB.NET 而不是 VB6,那是 ASP.NET 而不是 ASP

标签: asp.net vb.net


【解决方案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)

或者使它成为中继器中的“真正的”aspnet 控件。那么循环中的代码是正确的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多