什么';这是验证中继器中动态构建的RadioButtonList的最佳方法

本文关键字:构建 动态 RadioButtonList 方法 最佳 中继器 验证 什么 | 更新日期: 2023-09-27 18:19:45

我有一个中继器,每行都包含一个RadioButtonList。

 <asp:Repeater ID="rptAccessories" runat="server" OnItemDataBound="rptAccessories_ItemDataBound">
                <ItemTemplate>
                    <tr>
                        <td style="display: none">
                            <asp:Label ID="lblAccID" runat="server" Text='<%# Eval("id") %>'></asp:Label>
                        </td>
                        <td>
                            <asp:Label ID="lblName" runat="server" Text='<%# Eval("name") %>'></asp:Label>
                        </td>
                        <%-- POPULATE CONDITION TABLE--%>
                        <td colspan="6">
                            <asp:RadioButtonList ID="rblCondition" Width="640px" CssClass="rblist" ValidationGroup ="vag" Style="margin-left: 40px; margin-right: -40px;" RepeatDirection="Horizontal" runat="server"></asp:RadioButtonList>
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:Repeater>

但我真的很难找到一种方法来验证单选按钮是否具有选定的值。

我尝试过使用RequiredFieldValidator,但这个错误表明它找不到控件。

我也尝试过使用JQuery,但这同样具有挑战性,因为我不知道如何将RadioButtonList的id传递给JQuery,因为它只在运行时创建:

$(document).ready(function() {
$('#btnSubmit').on('click', function(e) {
    var cnt = $("#rblCondition :radio:checked").length;
    if (cnt == 0) 
    {
        alert('Select any option.');
        e.preventDefault();
    }
        else 
            alert('Well Done!!!!');
    });
});​

我还尝试设置一个自定义CSS类,并将其用作标识符:

var cnt = $(".required :radio:checked").length;

但这并没有奏效。

我有一种感觉,我错过了一些显而易见的东西。。。

什么';这是验证中继器中动态构建的RadioButtonList的最佳方法

你的问题应该在其他地方,因为只要你把它放在ItemTemplate 中,RequiredFieldValidator就应该处理你的场景

<td colspan="6">
    <asp:RadioButtonList ID="rblCondition" Width="640px" 
        CssClass="rblist" 
        ValidationGroup ="vag" 
        Style="margin-left: 40px; margin-right: -40px;" 
        RepeatDirection="Horizontal" runat="server">
    </asp:RadioButtonList>
    <asp:RequiredFieldValidator id="RequiredFieldValidator1"
        ControlToValidate="rblCondition"
        ErrorMessage="required"
        ValidationGroup ="vag" 
        runat="server"/>        
</td>  

如果您想走jQuery路线。。呈现的ID将以您给它的ID开头,后面是下划线,后面是asp.net为跟踪它而提供的信息。您可以查看页面的源代码,查看实际呈现的html。

因此,您应该能够使用jQuery Starts With选择器:

$('div[id^="rblCondition_"]').each(function() {
    //validate each radio button list
});

请注意,我不赞成asp.net将容器渲染为div。此外,为了提高效率,在使用starts之前,使用更快的选择器过滤结果集可能是件好事。