【问题标题】:How to display an image in a new window如何在新窗口中显示图像
【发布时间】:2011-05-05 12:33:31
【问题描述】:

我对@9​​87654321@有一个后续问题

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

<asp:ButtonField>

如何处理点击以及如何在新的网络浏览器窗口中的新表单上显示图像?

非常感谢您的关注。

【问题讨论】:

    标签: asp.net image gridview


    【解决方案1】:

    您可以使用 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

    【讨论】:

    • 谢谢 我创建了一个javascript函数来打开一个新窗口。但是,图像是从数据库中检索的,并由一个名为 GetImage.aspx 的页面处理,该页面采用查询字符串,如我问题中的链接所示。我觉得我在这里的代码很纠结,我不确定如何用我的参数填充 URL。如何将当前行的 tradeId(主键)添加到 ImageURL?
    • 还有一件事,你知道有一种方法可以让新打开的窗口将自己调整为图像大小吗?
    • 如果图像具有固定大小,这将很容易,只需在带有 GridView 的页面上使用 window.open javascript 函数的参数即可。如果没有,那么您将必须在 GridView 页面上获取大小信息并将其作为参数传递给 window.open 函数。
    【解决方案2】:

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

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

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

    【讨论】:

    • 是的,我正在使用存储在 SQL Server 中的 .gif 图像。我不确定我应该在 NavigateURL 中放什么,因为正如我对 Arief 的评论中提到的,我有另一个名为 GetImage.aspx 的页面处理来自数据库的图像请求。你能帮忙吗?我也不确定如何格式化它以便调用 javascript 函数。
    • 感谢您的帮助,我决定使用 Arief 的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2021-11-20
    • 1970-01-01
    • 2022-12-11
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多