jQuery没有找到Asp.net转发器交替项

时间:2015-01-22 12:48:31

标签: c# jquery asp.net repeater custom-data-attribute

我的webforms页面上有一个转发器,其中有一个列表。在绑定列表时,我还将一个data-id属性附加到tr。问题是我需要在来自jQuery的web服务调用中使用该id,我正在测试是否可以通过在转发器项目中单击按钮时记录data-id属性值来获取id,但是从外观上看事情,它只记录项目,而不记录交替项目。

每次单击按钮时,按钮1,3和5都会生成日志,但是当我单击按钮2和按钮4时,控制台中不会记录任何内容。请参阅下面的代码。

转发器模板

    <asp:Repeater runat="server" ID="rptList" OnItemDataBound="rptList_OnItemDataBound">
        <HeaderTemplate>
            <table>
        </HeaderTemplate>
        <ItemTemplate>
            <tr runat="server" id="trList">
                <td runat="server" id="tdList"></td>
                <td runat="server" id="tdBtnRemove">
                    <asp:Button runat="server" ID="btnRemove" CssClass="btnRemove" Text="Remove" OnClientClick="return false;"/></td>
            </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
            <tr runat="server" id="trList">
                <td runat="server" id="tdList"></td>
                <td runat="server" id="tdBtnRemove">
                    <asp:Button runat="server" ID="btnRemove" Text="Remove" OnClientClick="return false;"/></td>
            </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>

列出商品

List<string> listObj = new List<string>(){"one", "two", "three", "four", "five"}; 


    protected void rptList_OnItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        string listItem = (string) e.Item.DataItem;
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            HtmlTableRow trList = (HtmlTableRow)e.Item.FindControl("trList");
            trList.Attributes.Add("data-id", listItem);

            HtmlTableCell tdList = (HtmlTableCell)e.Item.FindControl("tdList");
            tdList.InnerHtml = listItem;
        }
    }

jQuery按钮单击方法:

$(".btnRemove").click(function () {
    var dataAttributVal = $(this).closest("tr");
    var datA = dataAttributVal.data('id');
    console.log(datA);
});

控制台结果:

I click on all 5 buttons but i only get 1, 3, and 5 logged in the console

1 个答案:

答案 0 :(得分:0)

正如评论中所述,您的AlternatingItemTemplate错过了CssClass="btnRemove"属性。

因此,$(".btnRemove").click(...绑定不会定位到AlternatingItemTemplate中的按钮