Xpages,通过使用@Unique在视图面板中继承文档

Xpages,通过使用@Unique在视图面板中继承文档,xpages,Xpages,我有两个表单project(Document)和comment(Response to Response),我想创建一个视图来显示所选项目的所有注释 任何帮助都将不胜感激。我喜欢在xPages中做这类事情 暂时不要考虑项目和响应。想想独一无二的。为了使项目文档引用注释,您需要为每个注释添加一个唯一的ID,以便相互引用。不要在xPages中使用响应文档,我看不出有什么必要。保存注释时,通过引用此值将父文档的唯一ID保存到注释文档上的字段中,其中document1是父文档的数据源,document3

我有两个表单project(Document)和comment(Response to Response),我想创建一个视图来显示所选项目的所有注释


任何帮助都将不胜感激。

我喜欢在xPages中做这类事情

暂时不要考虑项目和响应。想想独一无二的。为了使项目文档引用注释,您需要为每个注释添加一个唯一的ID,以便相互引用。不要在xPages中使用响应文档,我看不出有什么必要。保存注释时,通过引用此值将父文档的唯一ID保存到注释文档上的字段中,其中document1是父文档的数据源,document3是子文档的文档

   <xp:modifyField name="uid"
        value="#{javascript:document1.getDocument().getUniversalID()}" 
        var="document3">
    </xp:modifyField>

现在您已经有了一堆父文档和子文档,您可以创建一个分类视图,其中只捕获注释。使用视图选择公式排除父窗体。使第一列成为您以前捕获的唯一ID。现在您有了一个视图,该视图将按照父对象的唯一id对所有注释进行分类

 <xp:dominoView var="view2" viewName="rejections"
        keys="#{javascript:document1.getDocument().getUniversalID()}">
    </xp:dominoView>

现在在xpage中,您需要对键值进行过滤。通过计算父文档值的键进行过滤。这里document1是父级

 <xp:dominoView var="view2" viewName="rejections"
        keys="#{javascript:document1.getDocument().getUniversalID()}">
    </xp:dominoView>

这样做的好处是它可以在viewPanel、dataView或repeat控件中工作,因为您引用的是数据而不是UI


如果你想做评论中的评论,有几种方法,但我认为它们都有相同的结构。如果你能做到这一点,开始研究重复控件,它们会让你摆脱正常的notes视图。

几年前,我不再在notes中使用父文档和响应文档,因为它们太麻烦了。出于几个原因,我也不再使用UNID作为“链接”。首先,UNID可以更改(解决save/rep冲突),第二次归档几乎是不可能的,因为当文档复制到另一个数据库时,UNID也会更改。因此,当我创建一个“父”文档时,我将@Unique存储到一个我称为LinkKey的字段中,并将该值存储在所有“响应”文档中。当我创建响应时,我将一个新的@Unique存储到一个字段rLinkKey中。这样,对响应的响应就知道它的发起者(LinkKey)和直接父级(rlinky)。现在,您可以相当轻松地将其扩展到任意级别。 这在本机Notes中工作正常,但现在在带有重复控件的XPages中,真正的功能来自嵌套重复控件。我一直想在笔记里做的事,但从来没有做过,现在已经是小菜一碟了。
缺点是getDocumentByUNID()将比getDocumentByKey(LinkKey,true)更快,但其他优势远远超过了不明显的时差(IMHO)

谢谢您的回答,我在项目和注释表单中添加了LinkKey和cLinkKey字段,这两个字段的类型都是Document,并使用视图选择SELECT Form=“comment”创建了一个视图第一列被分类并绑定到cLinkKey,然后创建了一个xpage for comment表单,该表单有一个值为“对不起,我真的是编程新手,我不懂var=“document3”的文件,您能告诉我它是从哪里来的吗?在哪里使用了父id(LinkKey)字段?我不确定我将第一个视图列绑定到cLinkKey是否正确。视图如何使用父id进行分类?很乐意提供帮助。你有两份文件。父母和孩子。在xpages vs Notes中,您可以在同一页面上写入多个数据源。所以document1是我的父文档,document3是我的子文档。这是因为我在一个页面上有多个数据源。我的问题是,评论(孩子)如何知道你在应用程序中评论的是哪个项目(家长)?你是如何设计你的应用程序来运行的?这是一个单独的评论页面吗?此外,为了保存值,您不需要输入文本字段。您可以在事件或按钮上写入值。我有一个显示所有项目的视图项目标题作为链接,当我从该视图单击项目时,它将打开可编辑在项目表单旁边有一个视图,该视图应显示所有评论(和评论回复)此视图顶部有一个按钮,我可以向所选项目添加新注释。感谢您的帮助您需要阅读您单击的项目文档的uniqueID并将其写入注释文档的uniqueID字段,这是两个文档之间建立关系的方式。如果您想,您可以使用另一个唯一值,它不必是唯一的。您可以使用项目名称/编号,或者我通常使用此方法显示分配给某人的所有文档。“键”是指父文档上的值必须位于子文档上。