goalie35
goalie35

Reputation: 786

Open new dynamic window within gridview dataview?

I have a gridview (called grdSearchResults) that contains links to pdfs. The pdf url's are returned from the database but I'm not sure how to add the url to an imagebutton control within the gridview.

Here's my codebehind:

List<SearchResults> search = _searchRepository.GetFactFileSearchResults(results);
        grdSearchResults.DataSource = search;
        grdSearchResults.DataBind();

And here's my aspx page code:

<asp:TemplateField HeaderText="FILE TYPE" ItemStyle-HorizontalAlign="Center">  
            <ItemTemplate>  
                &nbsp;<asp:ImageButton runat="server" ID="_imgbtnPreview" OnClientClick="<%# Container.DataItem("DownloadUrl") %>" ImageUrl="~/images/fileType_pdf.png" /> 
            </ItemTemplate>  

But this thows an error ("The server tag is not well formed") Any idea how to fix this? Thanks

Upvotes: 0

Views: 210

Answers (2)

codingbiz
codingbiz

Reputation: 26386

Your OnClientClick should be using single quote in the outer

OnClientClick='<%# Container.DataItem("DownloadUrl") %>'

And the image can be

<asp:Image runat="server" ID="x" ImageUrl='<%# String.Format("~/{0}", Eval("ImageUrl")) %>' />

Upvotes: 1

Tim Schmelter
Tim Schmelter

Reputation: 460138

I assume you want to call a javascript function OnClientClick. But you haven't showed us it so it's difficult to help.

You can also set the ImageButton's ImageUrl in RowDataBound (which i normally prefer):

protected void grdSearchResults_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView rv = (DataRowView) row.DataItem;
        ImageButton imgbtnPreview = (ImageButton)e.Row.FindControl("_imgbtnPreview");
        imgbtnPreview.ImageUrl = rv.Row.Field<String>("DownloadUrl");
    }
}

Upvotes: 2

Related Questions