xpages获取文档/数据源的UNID

xpages获取文档/数据源的UNID,xpages,Xpages,我在使用数据源的xpage上使用。我从中选择值的视图列出了具有另一个数据源的文档 我将所选值放入一个。我确实想创建一个链接,该链接应该将我从我获取值的视图重定向到列出的文档。换句话说,我确实希望从视图中找到文档的UNID,我确实选择了它 我为ssjsSelectFunction尝试了以下代码: var unid = viewScope.unid; if(typeof unid != "undefined" && unid != null) { var doc = databas

我在使用数据源的xpage上使用。我从中选择值的视图列出了具有另一个数据源的文档

我将所选值放入一个。我确实想创建一个链接,该链接应该将我从我获取值的视图重定向到列出的文档。换句话说,我确实希望从视图中找到文档的UNID,我确实选择了它

我为ssjsSelectFunction尝试了以下代码:

var unid = viewScope.unid;

if(typeof unid != "undefined" && unid != null)
{
var doc = database.getDocumentByUNID(unid);
var val1 = doc.getItemValueString("txt_numeAcord_1");
var val2 = doc.getUniversalID();

getComponent("inputText24").setValue(val1);
getComponent("inputText25").setValue(val2);
}
但是在选择了所需的文档之后。从选择列表中,只有InputExt25更新为值UNID,InputExt24为空。仅当我再次打开选择列表并选择文档时,才会添加InputExt24字段值。我想我错过了什么

我怎样才能做到这一点

我的xpage代码:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xc="http://www.ibm.com/xsp/custom"
    xmlns:xe="http://www.ibm.com/xsp/coreex" >
    <xp:this.data>
        <xp:dominoDocument var="Contr" formName="(fmFormularCIP)"></xp:dominoDocument>
        <xp:dominoView var="view1" viewName="vwAcord"></xp:dominoView>
    </xp:this.data>
    <xp:panel id="AcordCadru">
        &#160;&#160;&#160;

        <xp:br></xp:br>
        &#160;&#160;
        <xp:checkBox text="Acord cadru" id="checkBox6"checkedValue="Da" uncheckedValue="Nu" value="#{Contr.chkAcord}">

            <xp:eventHandler event="onchange" submit="true"
                refreshMode="partial" refreshId="AcordCadru">
            </xp:eventHandler>
        </xp:checkBox>
        &#160;

        <xp:inputText id="inputText24" value="#{Contr.acord}">


        </xp:inputText>

        <xc:viewpicklist rowsPerPage="10"
            buttonImage="./folder_explore.png" tableClass="tablecellgreen"
            headerClass="headerclass" rowClass="odd, even" searchBar="false"
            searchButtonText="Search" searchButtonClass="button2"
            searchBarClass="headerclass" pagerStyleFirst="navbutton1"
            pagerStylePrevious="navbutton2" pagerStyleCurrent="navbutton4"
            pagerStyleNext="navbutton2" pagerStyleLast="navbutton3"
            typeAheadBar="false" select="UNID" onReturn="Set Scope Value"
            bottomBarClass="bottomround headerclass" cancelButtonText="Cancel"
            cancelButtonClass="button2 floatthisright" type="Single Value"
            finishButtonText="Finish" finishButtonClass="button2 floatthisright"
            multiSelectButtonAddImg="./add.png"
            multiSelectButtonRemoveImg="./delete.png"
            picklistButtonClass="button" openDialogWith="Button"
            picklistLinkImg="./add.png" multiSelectLinkAddImg="./add.png"
            multiSelectLinkRemoveImg="./delete.png" selectWith="Button"
            multiValueSeparator="," clearSearchImg="./cross.png"
            SelectCellWidth="30px" dialogID="dialog1"
            dialogTitle="Alegeti nr. acord cadru" fieldName="inputText24"
            refreshID="AcordCadru" datasrc="view1" selectColumn="0"
            varName="viewScope.unid">
            <xc:this.viewColumn>
                <xp:value>0</xp:value>




                <xp:value>1</xp:value>
                <xp:value>2</xp:value>
                <xp:value>3</xp:value>
                <xp:value>4</xp:value>
            </xc:this.viewColumn>

            <xc:this.ssjsSelectFunction><![CDATA[#{javascript:
var unid = viewScope.unid;

if(typeof unid != "undefined" && unid != null)
{

var doc = database.getDocumentByUNID(unid);
var val1 = doc.getItemValueString("txt_numeAcord_1");
var val2 = doc.getUniversalID();


Contr.setValue("acord",val1);
Contr.setValue("sv",val2);
}}]]></xc:this.ssjsSelectFunction>
        </xc:viewpicklist>
        <xp:br></xp:br>
        &#160;&#160;&#160;

        <xp:inputText id="inputText25" value="#{Contr.sv}">


        </xp:inputText>
    </xp:panel>


</xp:view>
InputExt24未获取所选值,因为执行ssjsSelectFunction的代码太晚。它在参数refreshID导致的面板AcordCadru刷新期间执行。位于xc:viewpicklist前面的所有字段在ssjsSelectFunction的代码执行之前都会刷新。这就是为什么InputExt24没有得到新的选定值,而InputExt25在xc:viewpicklist之后得到

如果将InputExt24放在xc:viewpicklist后面,则它将获得新的选定值

但是,您可能希望先输入字段inputExt24,然后输入picklist按钮xc:viewpicklist。为此

删除ssjsSelectFunction代码 在InputExt24前面添加一个计算字段,代码非常相同

它会将新选择的值设置为文档,并使它们立即在InputExt24和InputExt25中可见


a您的文档是否有txt\u nume\u Acord\u 1?b不要追求组件。。。设置组件绑定到的项的值。请始终记住:组件是视图的一部分。您可以更新模型。如果更新视图,则存在模型更新视图并覆盖所做更改的风险made@stwissela是的,有一个txt\U numeAcord\U 1而不是txt\U nume\U Acord\U 1。b我也尝试:控制setValueacord,val1;-其中Contr是cc所在文档的数据源,acord是字段。还是一样的结果:我选择了一张单据之后。从选取列表:第二个字段立即用UNID更新,但第一个字段未完成。我必须重新打开选择列表,并再次选择该值作为第一个要用txt_numeAcord_1值更新的字段。您能否创建一个最小的示例并粘贴整个页面。一定有一个细节我们忽略了吧now@stwissel我添加了我的代码。希望能成功。Florin,你的代码中有很多依赖项。因此,当我将其粘贴到XPage中时,它不会运行。缺少表单、视图和示例数据。用最少的工作示例创建一个新的空数据库,并将其上传到某个地方。你是对的。这就是问题所在:inputExt24在xc:viewpicklist之前。我只是把它放在xc:viewpicklist后面,它可以工作。我也会测试你的代码。