如何存储和正确保存从重复控制字段值(how to store and save correctly

2019-10-20 23:27发布

我创建了一个简单的重复控制,它里面2角简单的具有inputText秒。 超过这个重复控制,有一个可编辑inputText3 (绑定到数据源)。 我用它来作重复控制里面的一些计算。 计算是正确显示。 我有2个按钮,为新行和删除/ hideLine。 目前,重复控制里面的2场未绑定到数据源。

我有一个按钮,保存该文档,并列出其一个viewPanel中的内部,具有第一列inputText3 ,点击。 我注意到,如果我打开文件(编辑或读模式)正确地显示该编辑的字段值,但重复控件中的字段都为空,即使我使用保存方法之前添加一些值。

我也尝试创建窗体(/数据源)内2场,这inputTexts绑定到他们,但再次重复控制字段为空。

 <xp:repeat id="repeat1" var="varRepeat" indexVar="index">
 <xp:this.value><![CDATA[#{javascript:parseInt(sessionScope.dField)
 }]]></xp:this.value>

...

 <xp:inputText id="inputText1"></xp:inputText>

 <xp:inputText id="inputText2"></xp:inputText>

重复外的可编辑字段:

<xp:inputText id="number" value="#{docrepeat.valtotala}"
        defaultValue="100">
</xp:inputText>

<xp:this.data>
        <xp:dominoDocument var="docrepeat" formName="docrepeat"></xp:dominoDocument>
    </xp:this.data>

我确实失去了一些东西在这里,希望能达到一个实用的解决方案。

我应该绑定使用重复的VAR财产2 inputText的?

或者我如何才能做到这一点?

重复控制代码:

<xp:repeat id="repeat1" var="test" indexVar="index" rows="8">
            <xp:this.value><![CDATA[#{javascript:parseInt(sessionScope.DField)
}]]></xp:this.value>
<xp:panel>
            <xp:table >
                <xp:tr>
                    <xp:td>

                        <xp:inputText id="inputText1">
                            <xp:eventHandler event="onchange"
                                submit="false">
                                <xp:this.script><![CDATA[try
{
var idx="view:_id1:inputText3";
var index=document.getElementById(idx).value;

var number="view:_id1:number";
var val=document.getElementById(number).value;

var sum = val;

for(var i=0;i<index;i++) {
var input1="view:_id1:repeat1:"+i+":inputText1"
var nr1=document.getElementById(input1).value;

sum-=nr1;
document.getElementById("view:_id1:repeat1:"+i+":inputText2").value = sum;
}
// calculating some %
document.getElementById("view:_id1:test").value = parseInt((sum*100)/val); 

}
catch(e)
{
alert("not working");
}]]></xp:this.script>
                            </xp:eventHandler>
                        </xp:inputText>
                        <xp:inputText id="inputText2"></xp:inputText>
                    </xp:td>
                </xp:tr>
            </xp:table>
            </xp:panel>
        </xp:repeat>

我的小场景是在这里描述: 中使用XPages如何获取/创建这个计算模块

Answer 1:

我想重复你的内部数据源是一个视图。 您需要添加重复内部对象数据的数据源。 做到这一点的方法是创建重复的内部面板,并给该面板数据源如下。

<xp:repeat id="repeat1" rows="30" value="#{view1}"
            var="rowData">
        <xp:panel>


 <xp:dominoDocument var="objectData1"
                        formName="Item"
                        documentId="#{javascript:return rowData.getNoteID();}"
                        ignoreRequestParams="true" action="openDocument">
</xp:dominoDocument>

!!!put your stuff in the panel!!!


</xp:panel>
</xp:repeat>

这是怎么回事上重复抓取数据源这是一个观点。 因此,将通过所有在视图中的条目的迭代。 但鉴于数据源不知道该怎么办的文件。 因此,您所创建的目标数据,这将抢特定文档的NoteID,并使其可用于重复的文件(通过noteID引用)。 使得它可以作为一个文件将允许它保存的值。 你可能将无法使用值选择器,但只是在字段名称类型,它会工作。

不知道我充分理解你的问题。 但你也需要保存的数据源。 所以,你可以要么把保存按钮在面板保存特定文件或使保存按钮保存所有的数据源。 我喜欢能够单独保存每个文档,因为它允许多个可以同时编辑应用程序。



文章来源: how to store and save correctly field values from repeat controls
标签: xpages