删除1行后,刷新以重复控制不正常

时间:2015-05-12 04:50:16

标签: javascript refresh xpages repeat

我有一个名为" 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;

1 个答案:

答案 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中获得的相同类型的值