gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:55:44 25 4
gpt4 key购买 nike

我在文档中有一个名为“selectedTime”的字段,该字段存储用户添加的选定时间。添加时间非常完美。这是后端。

现在我将解释这个从前端选择日期的问题。我给了一个添加时间的按钮。点击添加按钮时,日期时间的自定义控件被添加到重复控件。即使我 checkin 文档它显示了选定时间的列表。即使这样也能正常工作。

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

我假设这是重复控件的部分刷新问题,我什至尝试过但没有结果。完全刷新会破坏页面。

删除按钮的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;

最佳答案

另一种尝试可以将 repeat 链接到 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 中相同类型的值

关于javascript - 删除 1 行后刷新以重复控件无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30182011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com