我正在使用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?
答案 0 :(得分:1)
它位于C#中转发器的数据源:
所以如果你的C#是:
NavRepeater.DataSource = someData;
根据类型,长度为someData.Length
或someData.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 .