0

次のコードでエラーが発生します

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

error パーサー エラー メッセージ: サーバー タグの形式が正しくありません。

4

1 に答える 1

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 を使用して画像の URL を設定しています。

  1. クライアントで ImageURL を設定していません。
  2. 行タイプがデータ行かどうかを確認しています。
  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";
        }
    }
    
于 2012-09-28T10:38:49.290 に答える