删除 1 行后刷新以重复控件无法正常工作

Refresh to repeat control not working normal after deleting 1 row

我在文档中有一个名为 "selectedTime" 的字段,该字段存储由 user.Adding 添加的所选时间正在工作 perfect.This 是后端。

现在我将解释这个从前面选择日期的问题 end.I 已经给了一个按钮添加以添加 times.The 日期时间的自定义控件被添加到重复控件点击添加 button.Even 如果我签入文档,它会显示所选列表 times.Even 这很好用。

现在如果我想从重复控件中随机删除选定的时间,它会从文档中删除该特定记录,但是在页面上重复的最后一条记录消失了,

我假设这是重复控件的部分刷新问题,我什至尝试过,但没有 result.Full 刷新中断页面。

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;

另一种尝试可能是 link 使用 viewScope 而不是文档重复:

1) 在事件beforeLoadPage/afterLoadPage中:从文档中获取值,并将其放入viewScope变量中:

// beforeLoadPage event:
// ... get the doc
viewScope.selectedTimes = doc.getItemValue("selectedTimes");

2) 在repeat控件中,使用viewScope:

<xp:repeat value="#{viewScope.selectedTimes}"...

3) 更新完成后,同时更新 viewScope 和文档:

//...update the View Scope variable and get the document:
doc.replaceItemValue("selectedTimes", viewScope.selectedTimes);

如果将文档添加为数据源,这可能是一个提示:

您是否将文档作为数据源包含在 XPage 中?在这种情况下,尝试获取并更新 NotesXspDocument 而不是 DB 中的文档:

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 中,您得到一个字符串值:

var sdtString =  getComponent("inputHidden1").getValue();

如果您将时间值存储为 NotesDateTimes,您将在 Vector 中获得这种类型的值,并且 remove 方法将找不到 String,并且不会删除任何内容。

// In a Vector<NotesDateTime> the String cannot be found:
selectedTimes.remove(sdtString);

确保删除与 Vector 中相同类型的值