如何在新窗口中显示图像

时间:2010-11-05 09:41:51

标签: asp.net image gridview

我对How to display an image based on SelectedValue in a GridView?

有一个后续问题

我真正想做的是在我的GridView控件上有一个ViewImage按钮,这样当点击它时,图像会显示在新浏览器窗口的新页面上。我该怎么办?我想也许我需要创建一个

<asp:ButtonField>

如何处理点击,如何在新的网页浏览器窗口中将图片显示在新表单上?

非常感谢您的光临。

2 个答案:

答案 0 :(得分:2)

您可以使用TemplateColumn,在TemplateColumn中您可以定义一个按钮,您可以在其中放置javascript函数以打开新窗口。

例如:

<asp:TemplateField>
    <ItemTemplate>
        <input type="button" onclick="javascript:ShowImageInNewPage('PageToShowImage.aspx?tradeId=<%# Eval("TradeId") %>');" />
    </ItemTemplate>
</asp:TemplateField>

“ShowImageInNewPage”函数是一个自定义函数,您声明用所选图像URL弹出/打开新窗口。

在PageToShowImage.aspx中,声明一个img标签:

<asp:Image ID="imgBlah" runat="server" />

在PageToShowImage.aspx的代码中:

protected void Page_Load(object sender, EventArgs e)
{
    // this is querystring from GridView page
    if(Request.QueryString["tradeId"] != null)
    {
        imgBlah.Src = "GetImage.aspx?entityId=" + tradeId + "&entityType=T";
    }
    else
    {
        imgBlah.Src = "~/images/no-image.jpg"; // set no image
    }
}

HTH

答案 1 :(得分:1)

我希望您处理浏览器支持的图像格式。假设你是,你不需要ButtonField。正如Arief建议的那样,一种方法是在<asp:HyperLink>中使用TemplateColumn

<asp:TemplateField>
    <ItemTemplate>
        <asp:HyperLink ID="hyperLink1" runat="server" NavigatUrl="UrlToYourViewImagePage" Text="View Image" />
    </ItemTemplate>
</asp:TemplateField>

如果您希望在新窗口中打开图像,请为每个HyperLink的NavigateUrl构建window.open调用。