3

关于将数据绑定到表单有很多问题。这很简单。我有一个表单,它使用几个计算字段,这些字段使用@DbLookup 根据用户选择的下拉菜单来填充字段。问题是; 没有一个计算字段将任何值保存到它所绑定的表单中。保存在表单上的唯一数据是手动选择(在下拉菜单的情况下)或手动输入的数据。当我使用编辑框并且不将其设为“只读”时,数据保存得很好。为什么这么难?

4

3 回答 3

2

马克——我想有几个人靠近了……但让我们走吧。

编辑框上的只读阻止保存。这说得通。XPages 不应尝试保存标记为“只读”的内容。

正如史蒂夫所说,您最好使用计算域。但是,设置这些值,如果它们绑定到文档,那么我认为它们会保存得很好。

另一种方法是使用作用域变量。当您获得数据点时......您可以将其放入范围变量中,例如: viewScope.put("myField", myValue)

那么你的计算字段可以绑定到 viewScope 变量“myValue”。

但是,这当然不会保存回文档,因为它没有绑定到文档。因此,如果您想要这种方法,您会在文档保存事件中做什么......然后您使用 SSJS 将值分配给文档。就像是:

document1.replaceItemValue("myfield", viewScope.get("myField");

由于 xpages 基本上与 notes 客户端具有相同的文档事件。这对你来说可能很熟悉。

希望这可以帮助。

戴夫-NotesIn9.com

免责声明:我是在拉斯维加斯旅行后的飞机上回答这个问题的。因此,请将其纳入我的回答质量。:)

于 2013-06-12T18:48:07.600 回答
1

您需要将从@DbLookup 收到的数据放入编辑框字段中。计算域类似于传统 Notes 开发中的“计算显示”域。您可以通过只读属性选择是否允许用户更改值。

如果您想要听起来像您所做的只读值,请参阅此问题: 未提交 Xpage 中的只读字段

于 2013-06-12T17:11:56.690 回答
1

像往常一样,戴夫引导我去做一些有效的事情。在 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。如果有人有更好的方法来获得相同的结果,请发布它,以便我学习一些东西。感谢大家的帮助。

于 2013-06-13T16:54:38.293 回答