【发布时间】:2009-07-01 15:46:09
【问题描述】:
我有一个附加了列表元素的页面。如何确定该列表中的项目数?可以使用渲染标签、asp 或任何其他技术(只要有效!)
【问题讨论】:
标签: content-management-system reddot
我有一个附加了列表元素的页面。如何确定该列表中的项目数?可以使用渲染标签、asp 或任何其他技术(只要有效!)
【问题讨论】:
标签: content-management-system reddot
阅读渲染标签文档我相信有可能以更好的方式做到这一点
所以使用这个获取列表元素
上下文:CurrentPage.Elements.GetElement(lst_myPages).Value
Value 属性应该返回列表项的页面集合,因此您应该能够这样做
上下文:CurrentPage.Elements.GetElement(lst_myPages).Value.Count
【讨论】:
Context:Pages.GetPage(Guid:<%inf_GUID%>).GetElementByName(lst_myPages).Value.Count(其中 inf_GUID 是页面 GUID)
<!IoRangePreExecute>
<% lst_myPagesSize = 0 %>
<!IoRangeList>
<% lst_myPagesSize = lst_myPagesSize + 1%>
<!IoRangeRedDotMode><!--[if !IE]><%lst_myPages%><![endif]--><!/IoRangeRedDotMode>
<!/IoRangeList>
<!/IoRangePreExecute>
我认为这是最快的方法。 第一个计数器 = 0。然后在列表范围内递增计数器(请记住在该块中也包括列表占位符)。之后,您将获得计数器中的值。
【讨论】:
显然,这样做的唯一方法是遍历列表,计算每个项目,例如
<reddot:cms>
<foreach itemname="testList"
object="Context:CurrentPage.Elements.GetElement(lst_myPages).Value"
countername="listCounter">
</foreach>
</reddot:cms>
然后长度可以作为:
<%!! Store:listCounter !!%>
【讨论】:
在 OpenText 中使用这个渲染标签来获取列表的长度(列表元素的名称:lst_Navigation):
<%!! Context:CurrentPage.GetElementByName(lst_Navigation).GetLinkedContents().Count !!%>
Context/RDObj:通过 ObjectLoader Context(别名:RDObj),您可以访问 Management Server 的对象
CurrentPage:从当前页面返回页面对象
GetElementByName:从页面对象中通过名称获取页面元素的方法
GetLinkedContents:返回一个 LinkList 对象
Count:返回LinkList元素的个数
【讨论】: