如何在服务器文件夹中显示gridview中的图像?

时间:2012-09-28 10:25:34

标签: c# asp.net

我在代码

后收到错误
 <asp:TemplateField HeaderText="Image">
<ItemTemplate>
   <asp:Image ID="img" runat="server" ImageUrl="~/Attachment/<%#Eval("Image") %>" />
</ItemTemplate>
</asp:TemplateField>

错误 分析器错误消息:服务器标签格式不正确。

1 个答案:

答案 0 :(得分:0)

首先尝试一下:

 <asp:TemplateField HeaderText="Image">
 <ItemTemplate>
    <asp:Image ID="img" runat="server" ImageUrl="<%# Page.ResolveClientUrl(String.Format("~/Attachment/{0}",Eval("Image"))) %>" />
    </ItemTemplate>
 </asp:TemplateField>

在不在客户端的服务器中还有另一种选择。如果您需要在运行时设置图像URL,则它非常有用。

 <asp:GridView runat="server" ID="gvActivities" AllowSorting="true" AllowPaging="true"
        PageSize="25" AutoGenerateColumns="false" Width="100%" OnSorting="gvActivities_Sorting"
        OnRowDataBound="gvActivities_RowDataBound">
        <Columns>

            <asp:TemplateField HeaderText='Image' HeaderStyle-Width="4%"
                SortExpression="ActivityType">
                <ItemTemplate>
                    <asp:Image ID="ImageType" runat="server" AlternateText='<%# Eval("Type") %>' />
                </ItemTemplate>
            </asp:TemplateField>

你有没有看到,我正在使用OnRowDataBound来设置图片网址。

  1. 我没有在客户端设置ImageURL。
  2. 我正在检查Row类型是否为数据行。
  3. 然后我创建一个图像并将图像从笑容中放入其中。看到我正在使用FindControl方法。 “ImageType”是网格中图像的id。
  4. 然后我设置了imageURL属性

    protected void gvActivities_RowDataBound(object sender, GridViewRowEventArgs e)
    {
       if (e.Row.RowType == DataControlRowType.DataRow)
        {
           Image img = (Image)e.Row.Cells[0].FindControl("ImageType");
           img.ImageUrl = Page.ResolveClientUrl("Image URL path);
           img.AlternateText = "Text";
           img.ToolTip = "Tooltip";
        }
    }