如何从外部访问重复控件,例如通过CSJS

时间:2015-07-22 11:04:47

标签: xpages

我如何/应该从外部访问重复控件?在我的情况下,我想计算重复控件中的项目的一些附加值,并用jquery更新每个项目。

2 个答案:

答案 0 :(得分:0)

在SSJS中,您始终使用getComponent(“id”)访问组件。如果重复的内容只是一个视图,而不是在XPage级别定义视图数据源,而不是重复,您可以使用数据源的id来获取视图对象,即view1。

答案 1 :(得分:0)

您可以通过getComponent()从SSJS访问重复控件。但是,如果要访问重复中的组件,则会更具挑战性。

默认行为是创建一个"行"重复的组件然后,在渲染响应阶段,迭代它们以从相关的起始点({{1})生成适当数量的行(重复控件的rows属性)的相关HTML重复控件的属性,可能已经被寻呼机递增),从相关数据中选取数据(重复的first属性)。

如果重复设置了value,则在页面加载时,运行时会为适当的行数创建一组控件(重复控件的repeatControls="true"属性)。但是,访问它们可能仍然是一个挑战。这也将删除使用寻呼机的能力。

如果你想操纵,例如重复中的相应视图条目,一个选项可能是通过每行内的计算属性将加载到ViewScope中的UNID / Note ID。例如。

rows

如果viewScope变量是第一行,则初始化(或重新初始化)(请仔细检查第一行的rendered="#{javascript:if (view.isRenderingPhase()) { if (idex == 1) viewScope.put("myVar", new java.util.ArrayList()); viewScope.get("myVar").add(entry.getNoteID()); return true; } else { return true; }" 为1,idex是您定义的变量名称对于重复控件的idex属性,并将NoteID添加到列表中。因此,元素0是第一行的NoteID,元素1是第二行的Note ID等。

如果您希望操纵值,您可以通过使用动态绑定采取类似的方法。 StackOverflow上有关于重复控件和博客帖子的动态绑定的各种问题,可能是Tim Tripcony或者Jesse Gallagher。

除此之外,CSJS可能是操纵重复内容的最简单方法。请注意,如果你进行部分刷新,其refreshId是重复,它可以取代你在客户端做的任何事情。