2

私は次のものを持っています。

<asp:Repeater runat="server" ID="Repeater">
<ItemTemplate>
        <sc:image field="image from droplink" Item='<%# Container.DataItem %>' runat="server" />
</ItemTemplate>

「ドロップリンクからの画像」は、ドロップリンクで選択された値(Sitecoreコンテンツアイテム)です。このアイテム内には、ソースが必要な実際のメディアアイテムである「画像」フィールドがあります。したがって、このフィールドはコンテンツアイテムのGUIDを返すだけなので、上記は機能しません。

上記のリピーターでドロップリンクで選択したアイテムの[画像]フィールドから画像のsrcを取得するにはどうすればよいですか?

4

2 に答える 2

2

次の回答は、コンテキストアイテムのドロップリンクがメディアアイテムを指していることを前提としています。(質問者の説明の前に)。他の誰かに役立つかもしれません。

コードビハインドでasp:ImageとOnItemDataBounde.Item.DataItemハンドラーを使用し、 (eはRepeaterItemEventArgs)を使用してアイテムをバインドする必要があります。を確認e.ItemTypeしてくださいListItemType.Item。そこからそれは次のようなものになります...

var item = (Item)e.Item.DataItem;
var dropLink = new InternalLinkField(item.Fields["image from droplink"]);
var mediaItem = dropLink.TargetItem;
if (mediaItem != null)
{
  var options = new MediaOptions { Height = 100, Width = 100 }; //change to your dimensions
  var imageUrl = MediaManager.GetMediaUrl(new MediaItem(mediaItem), options);
  var imageControl = e.Item.FindControl("myImageControlID"); //change to asp:Image ID
  imageControl.ImageUrl = imageUrl;
  imageControl.AlternateText = mediaItem.Alt;
}

ページエディタをサポートしている場合(私はあなたがサポートしていることを願っています!)、リピーター内でフレームの編集を使用して各アイテムの画像を編集できます。(リンクされた例では、全体の周りに編集フレームが配置されていますが、編集フレームをの中に配置し、プロパティを現在のアイテムIDにデータバインドするListView必要があることに注意してください。)RepeaterDatasource

于 2013-01-28T23:05:16.910 に答える
2

Itemsc:ImageタグのorDatasourceプロパティに、Imageフィールドを含む実際のアイテムを入力する必要があります。IDまたはパスであるのに対しItem、はオブジェクトになります。次のようにすべきだと思います。ItemDatasource

<sc:Image runat="server" Field="image field" Datasource="<%# ((Item)Container.DataItem)["droplink field"] %>" />
于 2013-01-28T23:21:56.223 に答える