найти вложенный контрольный список в контроллере повторителя с помощью jquery - PullRequest
0 голосов
/ 11 марта 2011

Используя VS 2008, у меня есть элемент управления Repeater с вложенными элементами, и я хочу выбрать один из них (флажки) с помощью jquery.

<asp:Repeater runat="server" ID="storesRep" DataSourceID="storeSqlDataSource" OnItemDataBound="StoresRep_ItemDataBound">
        <ItemTemplate>
            <table style="padding:0px">
            <tr>
                <td style="width:200px"><asp:Label ID="infoLbl" runat="server">Choose stores for upload:</asp:Label>&nbsp;&nbsp;&nbsp;&nbsp;</td>
                <td style="width:110px"><asp:Label ID="storeLbl" runat="server" Text='<%# Bind("Name") %>'></asp:Label>&nbsp;&nbsp;</td>
                <td><asp:CheckBox runat="server" ID="storeCheck" CssClass="storeCheck" /></td>
            </tr>
            </table>
        </ItemTemplate>
        <FooterTemplate>
            <table runat="server" id="footerTbl" visible="false" style="padding:0px">
                <tr>
                    <td style="width:200px"><asp:Label ID="infoLbl" runat="server">Choose stores for upload:</asp:Label>&nbsp;&nbsp;&nbsp;&nbsp;</td>
                    <td><asp:Label ID="lblEmptyData" Text="No Stores found." runat="server" ForeColor="GrayText"></asp:Label></td>
                </tr>
            </table>        
         </FooterTemplate>
    </asp:Repeater>

Вот мой сценарий

$('#<%= uploadBtn.ClientID %>').click(
    function() {

        //check if store was chosen from list
        var storeChecked = false;
        $('#<%= storeCheck.ClientID %>').each(function() {

            if ($(this).attr('checked'))
                storeChecked = true;
        });
        if (storeChecked == false) {
            alert("Upload is only possible if a store has been chosen from list.");
            return false;
        }

Я получаю сообщение об ошибке компилятора "storeCheck не является известным именем в текущем контексте".

1 Ответ

1 голос
/ 11 марта 2011

Это не работает, потому что вы пытаетесь получить доступ к storeCheck по его идентификатору, а storeCheck существует только в контексте ретранслятора.

Вместо этого вам следует использовать класс.Поэтому измените:

$('#<%= storeCheck.ClientID %>').each(function() {

на

$('.storeCheckBox').each(function() {

Вы также можете изменить свой код на этот, который просто проверяет наличие каких-либо отмеченных флажков с классом storeCheck:

$('#<%= uploadBtn.ClientID %>').click(function() {
    if($('span.storeCheck input:checked').length == 0) {
        alert("Upload is only possible if a store has been chosen from list.");
        return false;
    }
});

Изменен код, так как кажется, что asp.net ставит флажок внутри диапазона с указанным вами классом, а не применяет его прямо к флажку.

jsfiddle - http://jsfiddle.net/infernalbadger/rAVLA/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...