我的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);
});
控制台结果:
答案 0 :(得分:0)
正如评论中所述,您的AlternatingItemTemplate
错过了CssClass="btnRemove"
属性。
因此,$(".btnRemove").click(...
绑定不会定位到AlternatingItemTemplate中的按钮