rowData在重复控制中无法正常工作

时间:2014-07-02 12:57:13

标签: xpages

我有:<xp:repeat id="repeatColor" value="#{productcolors}" var="rowData" indexVar="rownum" > 问题:rownum从0到最后一个正确的值,但rowData始终是相同的

此重复控件绑定到视图&#34; productcolors&#34; ,带有产品代码密钥的视图。 此视图的第一列包含产品代码,升序(用于键)。 它还有一个第二和第三列,具有递增的多个值字段。(第二个是framecolor,第三个是装饰颜色)

这个想法是重复控制通过所选产品的不同颜色,但它只显示第一个,并且这样做的次数(rownum正确增加)有所选产品的颜色。

编辑: 所以我有一个名为&#34; A&#34;以framecolors&#34; 1&#34; &#34; 2&#34;和&#34; 3&#34; 当我使用重复控制时,rownum从0变为2,但rowData始终是framecolor&#34; 1&#34;的引用。我不知道为什么rowData不会改变。 当我使用rowData.getUniversalID()时,我得到包含多个值字段的文档的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); test = doc.getItemValueString("colorUpholstery");

结果是&#34;测试&#34;只保存多值字段的第一项&#34; colorUpholstery&#34; 。 怎么可能?我想我会得到&#34; colorUpholstery&#34;的全部价值。领域?

也许是因为我只有colors.nsf数据库的读者访问权限(Publicaccess)?

1 个答案:

答案 0 :(得分:0)

很高兴看到更多代码...就像重复内部的内容一样......只是为了更好地感受它与你对Notes视图的描述一致。

rowData应该是一个XSPViewEntry ...基本上是一个NotesViewEntry ...我建议你先做一些像rowData.getDocument()。getUniversalId()来确保它正确地迭代文档。我确定是。

听起来您正在尝试使用多值字段执行某些操作..您是否还要将视图设置为使用显示多个值作为行条目?或者那个设置是什么?如果打开它可能会有点冒险。不确定。

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

编辑:好的...基于您的其他信息的一些想法: 我怀疑你的问题是使用视图设置“将多个值显示为单独的条目”。每个都是同一个文件。所以这可能不会帮助你。我对输出的确切要求仍然有点模糊。这是来自可能产品的“浏览页面”吗?单个产品的“表单页面”? 我认为您想要单品的所有颜色吗?这是一个查找视图吧?所以你在你的产品“文档”上,现在你想列出所有的颜色? 假设...... 使用SSJS和对象模型。执行查找以查找具有当前产品的多值颜色字段的SINGLE文档。然后返回重复控件,如:

lookupDoc.getItemValue("colorField")

我不是100%确定这是正确的语法。关键是你可以将一个多值字段发送到重复控件,它将重复它。尝试使用视图技巧要容易得多。

如果您的目标是重复多个产品..并在每个“行”旁边显示所有可用的颜色,那么您正在寻找嵌套重复...外部重复(outerData)到迭代所有主要产品,并在另一个重复(innerData)颜色内部。在重复代码中,您使用“outerData”来获取多值字段。类似的东西:

outerData.getDocument().getItemValue("colorField")

假设我正确理解你,这些是我的建议。

我在早期的NotesIn9上做过这样的嵌套重复示例。我相信就是这个:http://notesin9.com/index.php/2010/03/30/notes-in-9-show-14-repeats-repeated/

也许这会有所帮助。

第二次编辑回复:

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

doc.colorUpholstery(0)

或不太常用的

doc.getItemValue("colorUpholstery")(0)  ' I might have that wrong.  I never really used it

再次,如果你想列出所有颜色,我会使用repeatControl并传入: doc.getItemValue(“colorUpholstery”)然后你的那个重复的“rowData”将是每个值。我见过别人避免重复,做一些javascript爆炸或内爆类型的东西,我相信。使用“\ N”或其他东西作为新行的分隔符。我只是用一个重复。 Easer让我明白。 我再次想到你需要的所有东西都在NotesIn9第14集中。