Xpages显示一个新文档.在对话框中



我最近有个问题让我很头疼。

在我的XPage中有一个视图显示一些文档(假设Pdoc作为数据源),我在<xe:dialog>中打开/创建它们。这个对话框只有Pdoc声明为数据源,它从Xpage数据源继承了一些值。我的可点击列公式是:

// some var declarations
var formName = rowData.getDocument().getItemValueString("Form");
if ( formName == "fmP" )
{ viewScope.put("dlgDocUnid", pe.getUniversalID())
getComponent("exampleDialog").show(); }

在同一个XPage上,我可以通过按钮New Pdoc使用相同的对话框创建新的Pdoc

问题是:当我打开一个现有的Pdoc,然后只是保存它或关闭它,然后我使用按钮创建一个newNote =>旧/以前(已经保存的Pdoc)显示…

如果我首先创建了一个新的注释Pdoc,它工作,它显示了一个新的空Pdoc.

我的对话框数据代码:
<xp:this.data>
        <xp:dominoDocument var="Pdoc" formName="fmPersContact"
            ignoreRequestParams="true" scope="request" action="editDocument">
            <xp:this.documentId><![CDATA[#{javascript:viewScope.get("dlgDocUnid");}]]></xp:this.documentId>
        </xp:dominoDocument>
    </xp:this.data>

我使用.documentId从viewPanel打开方法。我认为这就是问题所在。我认为,(我不确定),我应该以这样的方式计算这个文档id,当我创建一个newNote这个文档id不应该再是viewScope.get("dlgDocUnid")。感谢您的宝贵时间。

如果我理解正确的话,您在XPage中定义了两个数据源,并尝试在对话框中使用它们,对吗?相反,我建议在xe:dialog的面板中定义单个数据源。

我在博客上写过一个类似的例子。在这个例子中,工具提示对话框已经被使用,但它是相同的逻辑,你可以用xe:dialog代替xe:tooltipDialog

http://lotusnotus.com/lotusnotus_en.nsf/dx/mini -模式- - xpages参数-编辑-与-对话框- 1. - htm

这里的想法是使用viewScope变量命名为noteId。要打开现有文档,请将此变量设置为现有文档的注释id。要创建新文档,将该值设置为NEW。然后根据以下变量在对话框中定义数据源:

<xe:dialog>
 <xp:panel style="width:500.0px"> 
  <xp:this.data> 
    <xp:dominoDocument
        var="document1"
        formName="Parameter" 
        action="#{viewScope.noteId eq 'NEW'?'createDocument':'editDocument'}"
        documentId="#{viewScope.noteId eq 'NEW'?'':viewScope.noteId}" 
        ignoreRequestParams="true"> 
    </xp:dominoDocument> 
  </xp:this.data> 
 ..... Dialog content ....
 </xp:panel>
</xe:dialog>

当您将数据源放在对话框中时,在启动对话框之前,您不会刷新页面以加载或准备数据源,我猜这是您当前的问题。

可能是您忘记禁用忽略请求参数的标志。听起来对话框总是与当前文档相关联,而不是与docid

中的参数相关联。

最新更新