0

有没有人对如何在简单的 xPages 视图中打印选定的文档有建议。我正在转换旧版应用程序。其中使用了以下 Lotus 脚本代码进行打印。谢谢

Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
count = collection.count

If count = 0 Then
    Goto errSelectDocs
End If

Stop
For i = 1 To count
      '
    Set note = collection.GetnthDocument (i)

    Set Source2 = w.EditDocument( False, note )

    Set Source3 = w.ComposeDocument("","","mRecensement imp")
    Call Source3.print(1)
    Call Source3.close
    Call Source2.close


      '----------------------------------

nextdocument:        

Next
4

2 回答 2

2

我将在这里回答,而不是在西蒙回答的评论中跟进。那么好吧。我们说的是构建一个新页面,其中包含对所选文档的重复控制。提问者说,我认为这样做似乎是错误的: doc:NotesDocument=database.getDocumentByID(rowData); 为 30 + 个项目返回 doc.getItemValue("xxxx")

正确的。你不想那样做。应该管用。但做起来很恶心。

可能我会做的是创建一个 SSJS 函数来传递 rowData 。在该函数中构建一个数组。加载文档一次...将所有项目放入数组中,然后使用重复控件将它们传递回页面。

那时您所做的可能是拥有一个面板并使用绑定到面板的 dataContext 或 objectData。面板内部是您的页面和字段。这些字段只是从 dataContext 或 objectData 中读取。所以你只得到一次文件。我想你甚至可以只使用一个作用域变量,尽管我认为没有事件可以在每一行上调用代码。因此,您可能需要将其破解到第一个字段中。但这就是你想要的。我之前在 StackOver flow 上问过一个关于返回多个参数的问题: How to pass variable parameters to an XPages SSJS function?

也许这很有帮助。

于 2013-07-27T00:54:57.137 回答
0

有人可能会想出一个更好的解决方案,但一个选择是这个。

首先在您的第一个 XPage 上有您的 viewPanel。选择您的文档并单击一个按钮。代码会这样做。

var viewPanel = getComponent("viewPanel1");
sessionScope.documentIDs = viewPanel.getSelectedIds();

然后,您将其交给另一个 XPage,该 XPage 对文档的打印结构具有重复控制权。它读取文档 ID 并创建页面。然后只需在加载后使用正常的打印命令即可。

window.print();
于 2013-07-26T12:57:52.343 回答