次のコードでエラーが発生します
<asp:TemplateField HeaderText="Image">
<ItemTemplate>
<asp:Image ID="img" runat="server" ImageUrl="~/Attachment/<%#Eval("Image") %>" />
</ItemTemplate>
</asp:TemplateField>
error パーサー エラー メッセージ: サーバー タグの形式が正しくありません。
最初にこれを試してください:
<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 を使用して画像の URL を設定しています。
次に、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";
}
}