使用Sitecore的ASP转发器中的项目数

时间:2013-11-07 03:57:00

标签: asp.net sitecore repeater

我正在使用Sitecore ascx文件,并得到类似的内容:

<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?

3 个答案:

答案 0 :(得分:1)

它位于C#中转发器的数据源:

所以如果你的C#是:

NavRepeater.DataSource = someData;

根据类型,长度为someData.LengthsomeData.Count()

获取某个位置的特定项目:

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

或者基于类型,也可以是:

Item second = someData.ElementAt(1) // per 0-indexing

答案 1 :(得分:0)

你可以从枚举中得到这些,你将转发器绑定到。

答案 2 :(得分: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 .