我想从视图中打印选定的文档

时间:2013-07-26 12:10:28

标签: xpages

是否有人建议如何在简单的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

2 个答案:

答案 0 :(得分:2)

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

右。你不想那样做。应该管用。但是要做icky。

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

你所做的可能就是有一个面板,并使用一个绑定到面板的dataContext或objectData。面板内部是您的页面和字段。这些字段只是从dataContext或objectData中读取的。所以你只得到一次文件。我想你甚至可以只使用一个范围变量,虽然我不认为有一个事件来调用每一行的代码。所以你需要将它破解到第一个字段或者某个东西。 但这就是你想要的。我之前在StackOver流程上问了一个关于返回多个参数的问题:How to pass variable parameters to an XPages SSJS function?

也许这很有帮助。

答案 1 :(得分:0)

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

首先在第一个XPage上安装viewPanel。选择您的文档,然后单击按钮。代码会这样做。

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

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

window.print();