我有全局上下文文档currentDoc并且使用currentDoc的响应重复控制
在重复控制中,我有2个字段:
1)ComboBox
2)编辑框,由ComboBox计算可见:
var temp = respDoc.getItemValueString( "Combobox1");
return temp == "a";
Onchange事件ComboBox我更新重复控制。
我有按钮“添加响应”(创建/保存响应和更新重复控制)
这是工作。但是..如果我创建响应并保存此字段,计算的Visible重置为“”并且不保存。如果我重新输入文本到Editbox并重新保存,那么确定。仅在重新保存后才有效。没有错误。
可能你知道吗,有什么问题?
<xp:this.data>
<xp:dominoDocument var="curDoc" formName="test"></xp:dominoDocument>
</xp:this.data>
<xp:repeat id="repeat1" rows="30" var="respDoc"
repeatControls="false"
indexVar="respDocIndex" value="#{javascript:return curDoc.getDocument().getResponses();}">
<xp:panel id="panel1">
<xp:table>
<xp:tr>
<xp:td style="width:150.0px">
<xp:comboBox id="comboBox1" style="width:95%"
value="#{respDoc.combobox}" required="false">
<xp:selectItem
itemLabel="Email" itemValue="a">
</xp:selectItem>
<xp:selectItem itemLabel="UserName"
itemValue="b">
</xp:selectItem>
<xp:eventHandler event="onchange"
submit="true" refreshMode="partial" refreshId="repeat1">
</xp:eventHandler>
</xp:comboBox>
</xp:td>
<xp:td>
<xp:inputText id="inputText2"
value="#{respDoc.editbox}" maxlength="20">
<xp:this.rendered><![CDATA[#{javascript://return true <---- if uncomment it, then all work
var temp = respDoc.getItemValueString( "combobox");
return temp == "b";}]]></xp:this.rendered>
</xp:inputText></xp:td>
<xp:td>
<xp:button value="Save" id="button4">
<xp:eventHandler event="onclick"
submit="true" refreshMode="partial" refreshId="repeat1">
<xp:this.action><![CDATA[#{javascript:respDoc.save();}]]></xp:this.action>
</xp:eventHandler></xp:button>
</xp:td>
</xp:tr>
</xp:table>
</xp:panel>
</xp:repeat>
<xp:button value="Add Response" id="button2">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="repeat1">
<xp:this.action><![CDATA[#{javascript:if(curDoc.isNewNote())
curDoc.save();
var doc:NotesDocument = database.createDocument();
doc.replaceItemValue("Form", "test");
doc.makeResponse(curDoc.getDocument());
doc.save();}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
答案 0 :(得分:2)
您的方法有很多问题:
temp =="b"
会失败。我会使用style="display : none" to hide the field on the client side and have the event only run on the client. also add a value to your combobox when creating a new document:
var doc:NotesDocument = database.createDocument();
doc.replaceItemValue("Form", "test");
doc.makeResponse(curDoc.getDocument());
doc.replaceItemValue("Combobox1","a");
doc.save();
doc.recyle();
希望有所帮助