1

我正在使用 Sitecoreascx文件,得到了这样的结果:

<asp:Repeater ID="NavRepeater" runat="server">
    <ItemTemplate>
        <div class="item">                      
             <img src="<%# ((Sitecore.Data.Items.Item)Container.DataItem).Fields["Image Url"] %>" width="360" height="420" alt="">
    </div>
    </ItemTemplate>
    <SeparatorTemplate></SeparatorTemplate>
</asp:Repeater>         

无法弄清楚,如何从Sitecore.Data.Items.Item.

我还想知道如何检索集合中的给定项目 - 比如第 2 项?

4

3 回答 3

1

它位于 C# 中中继器的数据源上:

因此,如果您的 C# 是:

NavRepeater.DataSource = someData;

然后长度是someData.LengthsomeData.Count()基于它的类型。

要在某个位置获取特定项目:

Item second = someData[1]; // per 0-indexing

或者根据类型,也可以是:

Item second = someData.ElementAt(1) // per 0-indexing
于 2013-11-07T18:26:38.403 回答
0

你可以从你绑定你的中继器的枚举中得到这些。

于 2013-11-07T04:55:42.390 回答
0

你可以有类似的东西:

<asp:Repeater ID="NavRepeater" runat="server" OnItemDataBound="rptGallery_ItemDataBound">
<ItemTemplate>
    <div class="item">
     <sc:fieldrenderer id="fldGalleryItemImageThumbnail" runat="server" fieldname="ImageUrl" disablewebediting="true" />   
      </div>
     </ItemTemplate>
   <SeparatorTemplate></SeparatorTemplate>
 </asp:Repeater>          

在 Page_Load 上,您将拥有:

  protected void Page_Load(object sender, EventArgs e)
    {
          rptGallery.DataSource = listofitemyyouwanttoshow;
          rptGallery.DataBind();
    }

在 rptGallery_ItemDataBound 事件中,您将拥有:

    protected void rptGallery_ItemDataBound(object sender, RepeaterItemEventArgs e)
     {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Item item = (Item)e.Item.DataItem;
              //you can check index here of item
            if (item != null)
            {
                var fldGalleryItemImageThumbnail = e.Item.FindControl("fldGalleryItemImageThumbnail") as FieldRenderer;
                if (fldGalleryItemImageThumbnail != null)
                {
                    fldGalleryItemImageThumbnail.DataSource = item.ID.ToString();
                    fldGalleryItemImageThumbnail.Parameters = String.Format("width={0}", 360);
                }
               }
            }
          }
    }

  I hope it helps you . 
于 2013-11-07T05:00:49.080 回答