我有asp.net Web应用程序。我在.aspx页面上跟随了Repeater控件:
<asp:Repeater ID="repHomeList" runat="server" onitemdatabound="repHomeList_ItemDataBound">
<ItemTemplate>
<div class="pro-col">
<div class="p-img">
<asp:Image runat="server" ID="imgHomeImage" />
<asp:Label runat="server" ID="lblImageName" Visible="false" Text='<%#Eval("Images") %>'></asp:Label>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
并关注事件
protected void repHomeList_ItemDataBound(object sender, RepeaterItemEventArgs e) {
if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
return;
Image imgHomeImage = (Image)e.Item.FindControl("imgHomeImage");
Label lblImageName = (Label)e.Item.FindControl("lblImageName");
if (imgHomeImage != null && lblImageName != null)
imgHomeImage.ImageUrl = Server.MapPath("PropertyImages/" + lblImageName.Text);
}
上面的代码编译得很好。但是在Repeater Control中的DataBinds时不显示Image。
那么如何在ItemDatabound事件上设置Image?
由于
答案 0 :(得分:0)
请尝试将其更改为:
imgHomeImage.ImageUrl = Server.MapPath("~/PropertyImages/" + lblImageName.Text);
请注意~
您可以使用以下内容获取图像名称服务器端:
ListViewDataItem dataItem = (ListViewDataItem)e.Item;
YourObject anObject = (YourObject)dataItem.DataItem;
var images = anObject.Images;
imgHomeImage.ImageUrl = Server.MapPath("~/PropertyImages/" + images);
您必须将YourObject
更改为您的特定对象。
这样可以避免将它们写出并检索它们。