0

次のリピーターがあり、情報を含む 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を正確に取得する方法がわかりません。

4

2 に答える 2

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;
}
于 2014-03-27T13:38:05.970 に答える
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));
于 2014-03-27T13:30:46.587 に答える