0

我有一个中继器,每行都包含一个 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;

但这没有用。

我有一种感觉,我错过了一些明显的东西......

4

2 回答 2

1

你的问题应该在其他地方RequiredFieldValidator,只要你把它放在你的场景中就可以了ItemTemplate

<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>  
于 2013-06-25T12:54:25.723 回答
0

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

所以你应该能够使用 jQuery Starts With选择器:

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

请注意,我不肯定 asp.net 将容器呈现为 div。此外,为了提高效率,在使用开始之前使用更快的选择器过滤结果集可能会更好。

于 2013-06-25T13:20:26.743 回答