2010-11-05 72 views

回答

2

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

例子:

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

的“ShowImageInNewPage”功能声明与选定图片的网址,弹出/打开新窗口的自定义功能。

在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

+0

谢谢我创建了一个javascript函数来打开一个新窗口。然而,图像正在从数据库中检索,并由一个名为GetImage.aspx的页面处理,该页面接受查询字符串,如我的问题中的链接所示。我觉得我在这里纠结在代码中,我不知道如何使用我的参数填充URL。我如何将当前行的tradeId(主键)添加到ImageURL中? – 2010-11-05 12:58:30

+0

我刚编辑我的答案,检查它是否可以帮助你。 – Arief 2010-11-05 13:07:49

+0

伟大的东西,现在完美工作!谢谢你的帮助。 – 2010-11-05 13:46:24

1

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

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

如果你想要的形象打开一个新窗口,建立一个window.open呼吁每个超链接的NavigateUrl。

+0

是的,我正在使用存储在SQL Server中的.gif图像。我不太确定我应该放在NavigateURL中,因为正如我在Arief的评论中提到的,我有另一个名为GetImage.aspx的页面处理来自数据库的图像请求。你能帮忙吗?我也不确定如何格式化它,以便它会调用JavaScript函数。 – 2010-11-05 13:01:33

+0

感谢您的帮助,我决定使用Arief的解决方案。 – 2010-11-05 13:46:50