Xpages 我想从视图打印所选文档

Xpages 我想从视图打印所选文档,xpages,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 '

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

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

首先,将viewPanel放在第一个XPage上。选择您的文档并单击按钮。代码可以做到这一点

var viewPanel = getComponent("viewPanel1");
sessionScope.documentIDs = viewPanel.getSelectedIds();
然后将其交给另一个XPage,该XPage具有文档打印结构的重复控制。它读取文档ID并创建页面。然后在加载后使用普通的print命令

window.print();

我将在这里回答,而不是西蒙回答的评论中的后续内容。 那好吧。我们说的是使用对所选文档的重复控制构建一个新页面。提问者说,我认为,这样做似乎是错误的: doc:NotesDocument=database.getDocumentByID(rowData); 返回30多个项目的文件getItemValue(“xxxx”)

对。你不想那样做。应该有用。但是很难做到

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

然后,您可能需要创建一个面板,并使用绑定到该面板的dataContext或objectData。面板内是您的页面和字段。这些字段只是从dataContext或objectData读取的。所以你只得到一次文件。我想您甚至可以只使用一个作用域变量,尽管我不认为每行都有调用代码的事件。所以你可能需要把它破解到第一个领域。 但那正是你想要的。我之前问了一个关于StackOver flow的问题,关于返回多个参数,如下所示:


也许这会有帮助。

Hmmm如果创建一个重复:这可以工作,但我可以在viewScope中放置一个NotesDocument,因为我有大约30个字段要打印。我不知道为什么要在viewScope中放置NotesDocument对象。第一。您不希望将任何notes对象放入范围中。您可以在范围内放置一个UNID数组,然后从中重复。不确定我遗漏了什么…重复doc:NotesDocument=database.getDocumentByID(rowData)似乎效率不高;返回30多个项目的doc.getItemValue(“xxxx”)。我想知道是否有更好的办法。可能是我遗漏了一些东西:)你在循环过程中回收文档。另一个选项是查看要打印的字段。但是,您将无法以这种方式打印RT字段。我有点难以理解这一点,因为代码包含在注释中。你在说你在做的每一个领域:我闻到另一个音符非常有帮助,下周我会试试这个。谢谢Simon,你的“讨厌的”回收解决方案效果很好。但是我想消除数据的多次往返。最后,我将数据加载到一个数据bean中。然后使用EL简单地引用其他字段。谢谢西蒙和大卫。