我创建了一个简单的重复控件,里面有2个简单的inputText
s。在此重复控件之外,有一个可编辑的inputText3
(绑定到dataSource)。我正在用它在重复控制中进行一些计算。计算显示正确。我有2个按钮,用于newLine和delete / hideLine。目前,重复控件中的那两个字段没有绑定到数据源。
我有一个保存文档的按钮,并将其列在viewPanel中,第一列inputText3
可点击。我注意到如果我打开文档(在编辑或读取模式下),这个可编辑的字段值被正确显示,但是重复控件内的字段都是null,即使我在使用save方法之前添加了一些值。
我还尝试在表单(/ datasource)中创建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>
我肯定在这里遗漏了一些东西,希望能够找到一个功能性解决方案。
我应该使用repeat?
的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 how to obtain/create this calculations module
答案 0 :(得分:0)
我认为重复内部的数据源是一个视图。您需要在repeat中添加对象数据的数据源。这样做的方法是在repeat中创建一个面板,并为该面板提供如下数据源。
<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>
所以正在发生的是重复抓取作为视图的数据源。因此它将遍历视图中的所有条目。但是视图数据源不知道如何处理文档。因此,您创建了objectData,它将获取该特定文档的noteID,并将其作为文档提供给repeat(由noteID引用)。将其作为文档提供将允许它保存值。您可能无法使用值选择器,只需键入字段名称即可。
不确定我是否完全理解您的问题。但是您还需要保存数据源。因此,您可以在面板中放置一个保存按钮以保存该特定文档,或者使保存按钮保存所有数据源。我更喜欢能够单独保存每个文档,因为它允许多个应用程序可以同时编辑。
答案 1 :(得分:0)
Tim Tripcony撰写的这篇博文可能有助于http://www.timtripcony.com/tim/blog.nsf/d6plinks/TTRY-86EMBS