ASP.NET Repeater问题

时间:2010-09-06 19:57:20

标签: asp.net repeater

我有一个转发器控件,在ItemTemplate下,我有Image控件。无论如何旧的

如何以编程方式设置ImageUrl?

无论如何,我的旧HTML代码是这样的:

<ItemTemplate>
   <img src="<%# Eval("ImageSource") %>" alt="" />
</ItemTemplate>

但我想检查目录中是否存在图像,然后我可以设置临时图像。

我有一个代码但是......它不是真的有用,所以没有在这里展示它的感觉。你们能帮助我吗?我应该使用ItemCreated或ItemDataBound事件吗?

5 个答案:

答案 0 :(得分:4)

在模板的xml端,您需要直接调用方法。

<asp:Image runat="server" ID="myImg" ImageUrl='<%# MyImageUrlFunction(Eval("DataFieldName").ToString()); %>' />

您需要在公开定义的代码中使用相应的方法:

public string MyImageUrlFunction(string field) 
{
    // put some logic here to determine url
    return imageUrl;
}

答案 1 :(得分:3)

ItemDataBound中,执行以下操作:

protected void rpt_ItemDataBound(object sender, RepeaterEventArgs e)
{
    HtmlImage img = (HtmlImage)e.Item.FindControl("img");

    string imageUrl = (string)DataBinder.Eval(e.Item.DataItem, "ImageSource");
    if (File.Exists(imageUrl))
        img.Src = imageUrl;
}

那是System.Web.UI.HtmlControls.HtmlImageSystem.Web.UI.DataBinderSystem.IO.File

答案 2 :(得分:1)

的ItemDataBound。您可以通过当前项的findcontrol事件获取控件引用,然后检查图像是否存在。您可以使用Server.MapPath(“〜/ images / test.png”)获取文件路径,如果没有,请注入自己的文件路径。

您还可以使用客户端标记可以调用的公共方法,传入URL,并提供默认值(如果不存在)。

HTH。

答案 3 :(得分:0)

<ItemTemplate>
    <asp:Image ImageUrl='<%# System.IO.File.Exists(Eval("ImageSourceProperty").ToString()) ? Eval("ImageSourceProperty").ToString() : TemporaryImagePath %>' runat="server" />
</ItemTemplate>

答案 4 :(得分:0)

表示错误

  

服务器标签格式不正确

您应该删除代码中的额外空格!

<%# System.IO.File......%>
should be <%#System.IO.File......%>