关于将数据绑定到表单有很多问题。这很简单。我有一个表单,它使用几个计算字段,这些字段使用@DbLookup 根据用户选择的下拉菜单来填充字段。问题是; 没有一个计算字段将任何值保存到它所绑定的表单中。保存在表单上的唯一数据是手动选择(在下拉菜单的情况下)或手动输入的数据。当我使用编辑框并且不将其设为“只读”时,数据保存得很好。为什么这么难?
3 回答
马克——我想有几个人靠近了……但让我们走吧。
编辑框上的只读阻止保存。这说得通。XPages 不应尝试保存标记为“只读”的内容。
正如史蒂夫所说,您最好使用计算域。但是,设置这些值,如果它们绑定到文档,那么我认为它们会保存得很好。
另一种方法是使用作用域变量。当您获得数据点时......您可以将其放入范围变量中,例如: viewScope.put("myField", myValue)
那么你的计算字段可以绑定到 viewScope 变量“myValue”。
但是,这当然不会保存回文档,因为它没有绑定到文档。因此,如果您想要这种方法,您会在文档保存事件中做什么......然后您使用 SSJS 将值分配给文档。就像是:
document1.replaceItemValue("myfield", viewScope.get("myField");
由于 xpages 基本上与 notes 客户端具有相同的文档事件。这对你来说可能很熟悉。
希望这可以帮助。
戴夫-NotesIn9.com
免责声明:我是在拉斯维加斯旅行后的飞机上回答这个问题的。因此,请将其纳入我的回答质量。:)
您需要将从@DbLookup 收到的数据放入编辑框字段中。计算域类似于传统 Notes 开发中的“计算显示”域。您可以通过只读属性选择是否允许用户更改值。
如果您想要听起来像您所做的只读值,请参阅此问题: 未提交 Xpage 中的只读字段
像往常一样,戴夫引导我去做一些有效的事情。在 JavaScript 体验的初级阶段,我确信有更好的方法来做到这一点。我很高兴它有效。她是我放入 Xpage 的 QuerySave 事件的代码。
var cost1 = getComponent('ItemCost1').getValue();
var uom1 = getComponent('UOM1').getValue();
var Num1 = getComponent('ItemNum1').getValue();
var tot1 = getComponent('Total1').getValue();
docuent1.replaceItemValue("ItemCost_1", cost1),
document1.replaceItemValue("ItemUOM_1", uom1),
document1.replaceItemValue("ItemNum_1", Num1),
document1.replaceItemValue("CostTotal_1", tot1)
我有 30 次迭代,所以它可能有点笨拙,但有效的词是 WORKS。如果有人有更好的方法来获得相同的结果,请发布它,以便我学习一些东西。感谢大家的帮助。