0

画像のリスト ( ) をリピーターにバインドしようとして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;
    }
}
4

3 に答える 3

1

PlaceHolderの代わりにを使用するように変更した場合Image

<ItemTemplate>
    <asp:PlaceHolder ID="imgPlaceholder" runat="server" />
</ItemTemplate>

次に、DataBound イベントでこれにイメージを追加します。

Image myImage = (Image)e.Item.DataItem;
PlaceHolder imgPlaceholder = (PlaceHolder)e.Item.FindControl("imgPlaceholder");
imgPlaceholder.Controls.Add(myImage);

あなたが試みている方法でそれを行うことができない理由は、基本的imgButtonに、リピーターのものではなく、新しく作成されたイメージ コントロールであると言っているからです。あなたが考えていることは、基本的にそのすべてのプロパティを取得することですmyImage

于 2012-05-04T14:36:47.867 に答える
0

list<string> を作成してリピーターにバインドします。リスト内の各文字列は、画像への URL です。次のようにリピーターマークアップを変更します-->

<asp:Image ID="imgButton" runat="server" ImageUrl="DataBinder.Eval(Container.DataItem)" />
于 2012-05-04T13:57:31.603 に答える
0

次のコードが機能するはずです。

<asp:Repeater ID="repButtons" runat="server" OnItemDataBound="repButtons_OnItemDataBound">
    <ItemTemplate>
        <asp:Image ID="imgButton" runat="server" ImageUrl='<%# Eval("ImageUrl") %>' />
    </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();

于 2012-05-04T15:44:16.737 に答える