Xpages 重复控制中的rowData未按规定工作

Xpages 重复控制中的rowData未按规定工作,xpages,Xpages,我有: 问题:rownum从0到最后一个正确值,但rowData始终相同 此重复控件绑定到“ProductColor”视图,该视图带有产品代码上的键。 此视图的第一列显示产品代码,升序(对于键)。 它还有第二列和第三列,其中包含升序多值字段。(第二列是framecolor,第三列是内饰颜色) 其思想是,repeat控件遍历所选产品的不同颜色,但它只显示第一种颜色,并显示所选产品存在颜色的次数(rownum正确增加) 编辑: 例如,我有一款名为“a”的产品,有FrameColor“1”、“2”和“

我有:
问题:rownum从0到最后一个正确值,但rowData始终相同

此重复控件绑定到“ProductColor”视图,该视图带有产品代码上的键。 此视图的第一列显示产品代码,升序(对于键)。 它还有第二列和第三列,其中包含升序多值字段。(第二列是framecolor,第三列是内饰颜色)

其思想是,repeat控件遍历所选产品的不同颜色,但它只显示第一种颜色,并显示所选产品存在颜色的次数(rownum正确增加)

编辑: 例如,我有一款名为“a”的产品,有FrameColor“1”、“2”和“3”两种颜色 使用重复控件时,rownum从0更改为2,但rowData始终是framecolor“1”的引用。我不知道为什么rowData没有改变。 当我使用rowData.getUniversalID()时,我得到的ID是包含多值字段的文档ID的3倍,其中包含1、2和3,我想这很正常吧?但是,我如何才能处理其中的不同值呢

第二次编辑 我试过:

var testje:string=rowData.getUniversalID();
var db:NotesDatabase=session.getDatabase(database.getServer(),“product/colors.nsf”);
var doc:NotesDocument=db.getDocumentByUNID(testje);
测试=doc.getItemValueString(“彩色内饰”)

结果是“test”仅保存多值字段“colorHoodustery”的第一项。 这怎么可能?我想我会得到“ColorEndowery”字段的完整值


可能是因为我只有对colors.nsf数据库的读卡器访问权限(publiccess)?

如果能看到更多的代码就好了。。。就像重复中的内容。。只是为了更好地理解它与您对Notes视图的描述相一致

rowData应该是XSPViewEntry。。。基本上是一个便笺簿。。。我建议您首先执行类似于rowData.getDocument().getUniversalId()的操作,以确保正确迭代文档。我相信是的

听起来像是在尝试使用多值字段执行某些操作。。是否也将视图设置为使用显示多个值作为行条目?或者是什么背景?如果打开它,可能会变得很危险。不确定

同样,我并没有完全遵循目标是什么,但我会首先进行测试,以确保它确实在重复预期的文档。然后就是微调

编辑:好的。。。根据您的其他信息,您有一些想法: 我怀疑您的问题是使用了视图设置“将多个值显示为单独的条目”。每个文件实际上都是相同的。所以这可能对你没有帮助。我还不清楚你到底想要什么样的输出。这是从“查看页面”的产品吗?单个产品的“表单页”? 我想你想要单一产品的所有颜色?这是一个查找视图,对吗?所以你在你的产品“文档”上,现在你想列出所有的颜色? 假设是这样。。。 使用SSJS和对象模型。执行查找以查找具有当前产品的多值颜色字段的单个文档。然后返回到重复控件,如:

lookupDoc.getItemValue("colorField")
outerData.getDocument().getItemValue("colorField")
我不是100%确定这是正确的语法。关键是,您可以将多值字段发送给repeat控件,它将重复该字段。比尝试使用视图技巧容易得多

如果您的目标是重复使用多个产品。。在每个“行”的边上显示所有可用的颜色,然后你要寻找一个嵌套的重复真的。。。外部重复(outerData)迭代所有主要产品,内部重复(innerData)颜色。在该重复代码中,使用“outerData”获取多值字段。比如:

lookupDoc.getItemValue("colorField")
outerData.getDocument().getItemValue("colorField")
假设我对你的理解正确,这些是我的建议

我在早期的笔记9中做了一个嵌套重复的例子。我相信是这样的:

也许这会有帮助

第二次编辑响应:

根据您添加的代码,您正在设计使用“doc.getItemValueString()”,它只会获得多值字段的第一个值。这与LotusScript中的说法相同:

doc.colorUpholstery(0)
或者不太常用的

doc.getItemValue("colorUpholstery")(0)  ' I might have that wrong.  I never really used it
同样,如果您想列出所有颜色,我会使用repeatControl并传入: getItemValue(“ColorHoodustery”)则重复的“rowData”将是每个值。我见过其他人避免重复,做一些javascript爆炸或内爆类型的事情,我相信。使用“\N”或其他内容作为新行的分隔符。我只是重复一下。让我更容易理解。
同样,我认为您需要的一切都在第14集的注释中。

设置视图以使用显示多个值作为行条目是什么意思?在相应的列中,我设置了“将多个值显示为单独的条目”。我在上面做了一个编辑来解释我要做的事。是的。。。这就是我想到的环境。我从来没有在XPages上使用过这个,我不认为。也许一次。。我会非常小心地打开它并重复使用它。我没有具体的例子,但怀疑会发生奇怪的事情。我肯定会构建一个没有这个的视图,并尝试以这种方式获取您的信息。大卫,这有点像您的第一个假设。我在一个网页上,我想列出所选产品的所有不同颜色。使用universalid,我去文档获取颜色,但结果是相同的。我只得到多值字段的第一种颜色。奇怪的马克-我根据你的最新编辑更新了我的答案。检查一下,看看你能不能让它发挥作用。如果您不了解任何内容或需要更多帮助,请发回。