当发件人是 html 按钮时如何接收数据列表项?

How to receive datalist item when sender is html button?

在我的 DataList 中,我想要一个带有 FA 图标的按钮,所以我使用了一个 html 按钮并使其运行在 ="server",现在当我点击我想要的按钮时使用此按钮知道数据列表项是 'bounded'。

我尝试使用 asp.net 按钮,但我无法使用 FA 图标。

这是我的 html 和 C# 代码的样子:

<asp:DataList Width="100%" ID="dtlFAQSections" runat="server" DataSourceID="dtsFAQSections" DataKeyField="FAQSectionID">
    <ItemTemplate>
         <h2>
             <button id="btnFAQSection" runat="server" onserverclick="btnFAQSection_Click" style="background-color:#f24646; border:none; color:white; margin-left:25px; font-size:16px; cursor:pointer; height: 26px; width: 26px; margin-right: 5px; border-radius:30%;"><i class="fas fa-plus"></i></button>
             <asp:Label Font-Size="18px" ID="FAQSectionNameLabel" runat="server" Text='<%# Eval("FAQSectionName") %>' />
         </h2>
         <hr style="border: 1px dotted #000000; border-style: none none dotted; color: #fff; background-color: #fff;"/>
    </ItemTemplate>
</asp:DataList>

protected void btnFAQSection_Click(object sender, EventArgs e)
{
    Button btn = (Button)sender;
    DataListItem item = (DataListItem)btn.NamingContainer;
}

首先,您需要使用 HtmlButton,因为您没有将 ASP 控件用作按钮。然后简单地找到Parent。

protected void btnFAQSection_Click(object sender, EventArgs e)
{
    HtmlButton btn = (HtmlButton)sender;
    DataListItem item = (DataListItem)btn.NamingContainer;

    //now you can access the DataListItem
    Label label = item.FindControl("FAQSectionNameLabel") as Label;
    label.Text = "DataListItem Found";

    //or if you want to get the parent DataList
    DataList dl = btn.Parent.Parent as DataList;

    Label1.Text = dl.ID;
}