我对How to display an image based on SelectedValue in a GridView?
有一个后续问题我真正想做的是在我的GridView控件上有一个ViewImage按钮,这样当点击它时,图像会显示在新浏览器窗口的新页面上。我该怎么办?我想也许我需要创建一个
<asp:ButtonField>
如何处理点击,如何在新的网页浏览器窗口中将图片显示在新表单上?
非常感谢您的光临。
答案 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调用。