【问题标题】:Show images in Repeater control在中继器控件中显示图像
【发布时间】:2016-01-11 12:08:56
【问题描述】:

我有以下List

private List<System.Web.UI.WebControls.Image> _searchResultList = new List<System.Web.UI.WebControls.Image>();

此列表可能包含多个具有不同 URL 的图像。

我有以下Repeater

<asp:Panel ID="SearchPanel" runat="server" ScrollBars="Vertical">
    <asp:Repeater ID="Repeater" runat="server">
        <ItemTemplate>
            <asp:Image height="32" width="32" runat="server"/>
        </ItemTemplate>
    </asp:Repeater>
</asp:Panel>

使用DataSource 显示图像似乎不起作用。

Repeater.DataSource = _searchResultList;           
Repeater.DataBind();

我做错了什么?

【问题讨论】:

  • 您是否将这些图像序列化到服务器端某处的文件中?在网页上显示图像的方式是将它们作为文件保存,并通过向图像标签提供源信息来在网页上引用它们。没有简单的方法来渲染一个 Image 对象
  • @Andrei 图像的标准路径是“~/Images/ORAS/”。如果我在 aspx 页面上创建一个普通图像,我可以使用 ImageUrl 添加一个图像,但如果我必须在代码隐藏中创建它们,它就不起作用。
  • @Kohnarik..._searchResultList 不是字符串列表,因此您不能使用ImageURL='&lt;%Container.DataItem.ToString()%&gt;'。因为_searchResultList 是一个图像列表,你应该绑定ImageUrl 属性。这应该适合你:&lt;ItemTemplate&gt; &lt;asp:Image ID="Image1" height="32" width="32" runat="server" ImageUrl='&lt;%# Eval("ImageUrl") %&gt;' /&gt; &lt;/ItemTemplate&gt;

标签: c# asp.net asprepeater


【解决方案1】:

_searchResultList 不是字符串列表,因此您不能使用ImageURL='&lt;%Container.DataItem.ToString()%&gt;'。因为_searchResultList 是一个图像列表,你应该绑定ImageUrl 属性。这应该适合你:

<asp:Repeater ID="Repeater" runat="server">
    <ItemTemplate> 
       <asp:Image ID="Image1" height="32" width="32" runat="server" ImageUrl='<%# Eval("ImageUrl") %>' /> 
    </ItemTemplate>
</asp:Repeater>

在此示例中,Container.DataItem 指的是 Image 控件。这就是为什么我们使用Eval("ImageUrl") 来获取每个Image 控件的ImageUrl 属性。

【讨论】:

  • 在我之前向您展示的这个答案stackoverflow.com/a/33694399/2946329 中,您可以使用ImageURL='&lt;%Container.DataItem.ToString()%&gt;',因为源是字符串列表。但在此示例中,Container.DataItem 指的是Image 控件。这就是为什么我们使用Eval("ImageUrl") 来获取每个图像控件的ImageUrl
  • 我没有意识到这一点。这是非常有用的信息。谢谢。
  • 哦,我明白了。对不起,我今天有点脑残。我赞成它
【解决方案2】:
        <asp:Panel ID="SearchPanel" runat="server" crollBars="Vertical">
        <asp:Repeater ID="Repeater" runat="server">
         <ItemTemplate>
            <asp:Image height="32" width="32" runat="server" ImageURL='<%Container.DataItem.ToString()%>'/>// changes here
        </ ItemTemplate>
           </asp:Repeater>
            </asp:Panel>

【讨论】:

  • 尽管我很想这样做,但它对我没有任何作用。我已经检查了 _searchResultList 并且图像都在那里,就像他们应该的那样。如果我在Repeater 之外添加一个asp:Image 元素并使用相同的ImageURL,它就可以工作。但是在中继器内部,即使我使用静态 ImageURL,它也不会显示出来。
  • 好的,如果我将中继器内的 ImageURL 更改为 ImageURL="~/Images/ORAS/006.png" 并且我的 _searchResultList 中有 17 个图像,则 Image 006.png 将显示 17次。
  • 给我一个列表中url的例子
  • ~/Images/ORAS/006-mx.png
  • 嘿删除 databinder.eval 只需使用 ImageUrl='
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 2015-08-03
  • 1970-01-01
  • 2017-02-18
  • 2015-12-17
相关资源
最近更新 更多