我有一个名为" selectedTime"在一个文档中,这个字段存储用户添加的选定时间。添加时间是完美的。这是后端。
现在我将解释从前端选择日期的这个问题。我已经给了一个按钮添加添加时间。日期时间的自定义控件被添加到点击添加按钮的重复控制。即使我签入文件它显示了所选时间的列表。即使这样也可以。
现在,如果我想从重复控制中随机删除选定的时间,它会从文档中删除该特定记录,但在页面上,重复的最后一条记录会消失,
我假设这是部分刷新重复控制的问题,我甚至尝试过但没有结果。全部刷新会破坏页面。
删除按钮的java脚本代码
`var doc:NotesDocument = database.getDocumentByUNID(context.getUrlParameter("refId"))
var selectedTimes:java.util.Vector = doc.getItemValue("selectedTimes");
if(selectedTimes != null){
var sdtString = getComponent("inputHidden1").getValue();
if(selectedTimes.contains(sdtString))
selectedTimes.remove(sdtString);
doc.replaceItemValue("selectedTimes",selectedTimes);
doc.save();
};
var url:XSPUrl = context.getUrl();
view.postScript("window.refresh('"+url+"')");`
我知道很难理解我想要解释的内容,但对此的任何建议都将不胜感激。
即使有人想知道删除文档的字段值,在我的案例中,字段名称是" selectedTimes"并且值在重复控制中被添加次数,请分享。
编辑1:
//Repeat Control
var doc:NotesDocument = database.getDocumentByUNID(context.getUrlParameter("refId"))
var selectedTimes:java.util.Vector = doc.getItemValue("selectedTimes");
return selectedTimes;
答案 0 :(得分:0)
另一种尝试可能是使用viewScope而不是文档链接重复:
1)在beforeLoadPage / afterLoadPage事件中:从文档中获取值,并将其放在viewScope变量中:
// beforeLoadPage event:
// ... get the doc
viewScope.selectedTimes = doc.getItemValue("selectedTimes");
2)在重复控制中,使用viewScope:
<xp:repeat value="#{viewScope.selectedTimes}"...
3)完成更新后,同时更新viewScope和文档:
//...update the View Scope variable and get the document:
doc.replaceItemValue("selectedTimes", viewScope.selectedTimes);
如果文档将作为DataSource添加,这可能是一个提示:
您是否将XPage中包含的文档作为DataSource?在这种情况下,尝试获取并更新NotesXspDocument而不是DB中的Document:
的XPage:
<xp:this.data>
<xp:dominoDocument var="xspDocument"
action="editDocument"
documentId="#{param.unid}">
</xp:dominoDocument>
</xp:this.data>
SSJS代码:直接使用XspDocument
var selectedTimes:java.util.Vector = xspDocument.getItemValue("selectedTimes");
...
xspDocument.replaceItemValue("selectedTimes", selectedTimes);
如果不从文档中删除该值,这可能是一个提示:
在sdtString中,您将获得一个String值:
var sdtString = getComponent("inputHidden1").getValue();
如果您将时间值存储为NotesDateTimes,您将在Vector中获得此类型的值,并且remove方法将找不到String,并且不会删除任何内容。
// In a Vector<NotesDateTime> the String cannot be found:
selectedTimes.remove(sdtString);
请务必删除您在Vector中获得的相同类型的值