如何将面板绑定到现有的文档数据源或新创建的文档



在绑定到其自己的文档数据源("父")的xpage中,我有一个重复控件,显示一些视图数据(包含依赖文档或"响应")以及创建新"响应"文档的按钮。响应的数据显示在同一页面上的单独面板中,该面板仅在从重复响应中选择响应或创建新响应时可见。文档数据源被绑定到"动态"响应文档面板周围的面板上,如下所示:

<xp:panel id="panelFlDs">
    <xp:this.data>
        <xp:dominoDocument var="dsDocFileLink" formName="fmFileLink"
            ignoreRequestParams="true">
            <xp:this.documentId><![CDATA[#{javascript:viewScope.get("unidFileLink")}]]></xp:this.documentId>
        </xp:dominoDocument>
    </xp:this.data>
    <xp:panel id="panelFlForm">
        <xp:this.rendered><![CDATA[#{javascript:viewScope.get("showDialogFileLink")=="1"}]]></xp:this.rendered>
        <xc:ccFormFileLink></xc:ccFormFileLink>
    </xp:panel>
</xp:panel>

正如你所看到的,我正试图将我的数据源绑定到使用viewScope传递的docUnid。这对现有的文档工作得很好,对于新的文档(有一个警告,见下文),我只是在显示面板之前删除viewScope变量。对于新的响应,我还使用与

中相同的按钮代码设置了来自父节点的一些继承字段值
dsDocFileLink.replaceItemValue("flType", "flTypeFile");
dsDocFileLink.replaceItemValue("glBlockID", dsDocFileLinkBlock.getItemValueString("glBlockID"));
dsDocFileLink.replaceItemValue("histCreatedOn", @Now());

等。

需要注意的是,我不能在一行中创建两个新文档:第二个和随后的所有新文档似乎使用与第一个相同的数据源:它们的可编辑字段显示先前编辑的新文档的值。

我尝试创建新的数据源对象(并清除旧的)遵循Sven hasselbach的伟大的例子(这里和这里),但正如Sven在他的博客文章中指出,我不能立即使用我新创建的数据源。因此,我可以创建一个新的ds,但是我不能按照我计划的方式使用继承,因为数据源还不能使用。

在我尝试重新工作一切并使用默认值等可编辑字段在数据源级别开始继承之前:这甚至是我的任务的正确方式,还是我应该在某个地方采取另一种转变?

EDIT:我只是试图做没有继承,即创建一个新的响应,填写一些值,然后保存&关闭(备注:"关闭"隐藏响应数据面板),然后创建第二个新的响应。结果:第二个响应同样包含我为第一个响应填写的值。我的创建修改后的创建按钮现在看起来像这样:

var panelFlDs:com.ibm.xsp.component.UIPanelEx = getComponent("panelFlDs");
var ds = new com.ibm.xsp.model.domino.DominoDocumentData();
ds.setVar("dsDocFileLink");
ds.setFormName("fmFileLink");
panelFlDs.getData().clear();
panelFlDs.addData(ds);
viewScope.remove("unidFileLink");
viewScope.put("showDialogFileLink", "1");

问好

洛萨

进入重复控件的数据源的所有属性。这里有一个"Scope"设置。默认为viewScope。将其更改为requestScope,这样它就不会保留您创建的第一个文档。

最新更新