在ImageButton上检索ASP.NET Eval单击

时间:2014-03-27 13:24:59

标签: c# asp.net repeater imagebutton databinder

我有以下转发器,其中一些div包含信息和ImageButton。点击ImageButton我想要检索包含DataBinder.Eval

"ID"
 <asp:Repeater ID="RptPendingRequests" runat="server" onitemcommand ="RptPendingRequests_ItemCommand">
    //other divs here
    <div class="LabelCustomShort" style="font-size:10px"><%#DataBinder.Eval(Container.DataItem, "ID")%></div>
    <asp:ImageButton runat="server" ID="btnPrint" ImageUrl="~/Images/print.gif" onclick="btnPrint_Click" /></div>
    //other divs here
    <asp:Button runat="server" ID="btnSubmit"  Text="Submit" style="float:right;" onclick="btnSubmit_Click" />
    </asp:Repeater>

在ImageButton上单击我想要检索单击图像按钮的项目的ID,并将其发送到另一个方法,如下所示。

  protected void btnPrint_Click(object sender, RepeaterItemEventArgs e)
    {
        var id = e.Item.FindControl("Id") as Label;
        DefaultClass.createPDF(Convert.ToInt32(id));
    }

然而,因为它是一个图像按钮RepeaterItemEventArgs,因为它是一个图像按钮,所以只能ImageClickEventArgs,因此我不知道如何准确地检索id。

2 个答案:

答案 0 :(得分:0)

将带有id的隐藏字段添加到Repeater:

<asp:HiddenField ID="hfId" runat="server" Value='<%# Eval("ID") %>' />

然后在事件处理程序中:

var id = ((Control)sender).Parent.FindControl("hfId") as HiddenField;
DefaultClass.createPDF(Convert.ToInt32(id.Value));

答案 1 :(得分:0)

您还可以在CommandArgument中添加ID

<asp:ImageButton runat="server" ID="btnPrint" ImageUrl="~/Images/print.gif" OnClick="btnPrint_Click" CommandArgument = '<%# Eval("ID") %>'/>

在点击事件处理程序

protected void btnPrint_Click(object sender, EventArgs e)
{
   string id = (sender as ImageButton).CommandArgument;
}