我创建了一个用户输入值的表单,然后点击"添加"。然后,它会在表单上的“富文本”字段中创建一个表。
这是通过创建一个包含richtextitem的临时文档,通过DXL表示,将DXL中的表插入到richtextitem中,然后导入后来完成的。然后我使用uidoc.ImportItem将临时文档中的表复制到我的uidoc中。
这很好用,我对自己很满意。此外,用户可以"添加"更多行。这是通过删除表(使用Call uidoc.FieldSetText("table", "")
)并从新值重新创建表来完成的,如上所述。
但是,文档的每一行都有两个按钮,"编辑&#34>和"删除",以便用户可以在创建表后编辑行或删除它。
到目前为止,我专注于编码"删除"并且它有效。但是,当代码到达任何uidoc动作时,例如Call uidoc.FieldSetText("table", "")
或Call uidoc.EditGotoField("Table")
我得到了可怕的错误 - 错误 - 脚本忙碌"状态栏中显示消息,并且当我关闭文档时Notes会崩溃。
我认为这是由于按钮认为它在另一个文档中引起的,因此当它将焦点移动到它认为是不同的uidocument的字段时,会导致问题。
我尝试了一些不同的方法,例如在NotesDocument上设置按钮设置字段,然后使用隐藏值刷新以触发updateTable Sub。我还尝试过触发代理,但由于uidoc尚未保存,我无法获得session.documentcontext,当然我也无法访问代理中的UI。 / p>
我尚未尝试过的一件事是,使“删除”按钮触发一个公式命令,该命令将导致刷新uidoc,并从PostRecalc事件中引发updateTable Sub。
如果有人有任何其他建议,我会非常感激,因为这是一个阻碍我将其中一个遗留表格的表现提高约1000%的麻烦。
答案 0 :(得分:1)
好的,所以我尝试在未保存的uidoc中的富文本字段中的富文本表中使用我的DXL创建的按钮中使用公式语言而不是Lotusscript。它起作用了: - )
@Setfield("deleteRow"; 1);
@Command([ViewRefreshFields])
显然,创建DXL文档的LotusScript会在每个按钮的@Setfield中替换相应的行号。此外,我现在在QueryCalc事件中使用LotusScript来检查doc.deleteRow(0)
的值,如果它大于0,则调用updateTable子例程。
这个过程已经证明,向其他人解释一个问题往往会引发导致解决方案的想法。