画像のリスト ( ) をリピーターにバインドしようとしてSystem.Web.UI.WebControls.Image
いますが、画像が壊れて表示されます。ItemDataBound-event 内にブレークポイントを配置すると、DataItem は正しく、正しい ImageUrl を持っています。しかし、結果は間違っています。
このコードは非常に単純ですが、最終的にはさらに複雑になります。List<String>
ImageUrls でaをバインドしても、最終的には役に立ちません。これは、すべての画像がより固有のプロパティも持つためです。
リピータ:
<asp:Repeater ID="repButtons" runat="server" OnItemDataBound="repButtons_OnItemDataBound">
<ItemTemplate>
<asp:Image ID="imgButton" runat="server" />
</ItemTemplate>
</asp:Repeater>
画像付きリストの作成:
List<System.Web.UI.WebControls.Image> myButtons = new List<System.Web.UI.WebControls.Image>();
Image myEditButton = new Image();
myEditButton.ImageUrl = "~/images/themes/pencil.png";
myButtons.Add(myEditButton);
repButtons.DataSource = myButtons;
repButtons.DataBind();
データバインディング:
protected void repButtons_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Image myImage = (Image)e.Item.DataItem;
Image imgButton = (Image)e.Item.FindControl("imgButton");
imgButton = myImage;
}
}