JsonStatham
JsonStatham

Reputation: 10364

ImageButton open link in new page within Repeater

I have the below Image Button which resides in a Repeater:

<asp:ImageButton PostBackUrl='<%# DataBinder.Eval(Container.DataItem, "VesselId", "getattachment.do?VesselId={0}") %>' CausesValidation="false" ID="insurancestatus" runat="server"/>

So every time the user clicked on the button they were shown their attachment.

The requirement has since changed, and the attachment must open on a new page so I added the following to the Repeaters ItemDataBound event:

ImageButton imagebuttonInsurance = (ImageButton)e.Item.FindControl("insuranceStatus");
            imagebuttonInsurance.OnClientClick = String.Format("aspnetForm.target = '_blank'; return true()");

Now when I click on the image it does open another page but it just reloads the previous page on the new page. I tried removing the PostBackUrl and wiring up the following click event:

protected void insurancestatus_Click(object sender, ImageClickEventArgs e)
{
    Vessel vessel = (Vessel)e.Item.DataItem;
    Response.Redirect(String.Format("~/Secure/getattachment.do?VesselId={0}", vessel.VesselId));
}

But I couldn't get a handle on the item so cannot use the VesselId for the link, where am I going wrong here?

Upvotes: 0

Views: 671

Answers (1)

Jim
Jim

Reputation: 479

Use the second method, but use the command argument property like:

 <asp:imagebutton runat=server...... commandargument='<%# Eval("vesselid") %>' />

then:

protected void insurancestatus_Click(object sender, ImageClickEventArgs e)
{
    string vesselId = ((ImageButton)sender).CommandArgument;
   Response.Redirect(String.Format("~/Secure/getattachment.do?VesselId={0}", vesselId)); 
}

Upvotes: 1

Related Questions