上面的卡片通过重复填充,视图未分类。我现在要添加的是能够以任何顺序将删除标记附加到任何卡上。
以下是删除按钮的代码:
<xp:link>
<span class="glyphicon glyphicon-trash pull-right text-primary"></span>
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><xp:actionGroup><xp:executeScript>
<xp:this.script><![CDATA[#{javascript:
var name=getComponent("FullName").getValue();
var vec:NotesView = database.getView("SupportTeam");
var docEv:NotesDocument = vec.getFirstDocument();
if (name == docEv.getItemValueString("FullName")) {
docEv.replaceItemValue("SupportAction", "Delete");
docEv.save();
}
}]]></xp:this.script>
</xp:executeScript>
</xp:actionGroup>
</xp:this.action></xp:eventHandler>
</xp:link>
上面的代码有效,但删除按钮需要点击两次才能正常工作,并且必须按顺序排列,即如果&#39;测试6&#39;点击它不会删除,因为&#39;测试5&#39;挡路了。
我尝试使用getdocumentbykey()但是需要对视图进行分类,然后显示多个条目。在这种情况下,它会显示很多空白卡片。
我们将不胜感激。
答案 0 :(得分:0)
然而,我们需要看到你的重复代码,只要你将repeat的var属性设置为某个东西,然后让行数据可供你使用,所以你可以使用类似的东西:
var id = rowData.getUniversalID();
var docEv:NotesDocument = database.getDocumentByUNID(id);
docEv.replaceItemValue("SupportAction", "Delete");
docEv.save();
//Or to do a hard delete
docEv.remove(true);
答案 1 :(得分:0)
我决定使用while循环遍历集合两次以获取集合,然后使用for循环来执行操作,这似乎有效,但我确信应该有更好的方法来执行此操作。 以下是最终代码:
var name = getComponent("FullName").getValue();
var vec:NotesView = database.getView("SupportTeam");
var docEv:NotesDocument = vec.getFirstDocument();
var collection = [];
while (docEv != null){
try{
var member = docEv.getItemValueString("SupportFullName"), memberLength = collection.length;
collection.push(member);
for (var i = 0; i < memberLength; i++) {
if(memberLength != null && name == docEv.getItemValueString("SupportFullName")){
docEv.replaceItemValue("SupportAction", "Delete");
docEv.save();
}
}
}catch(e){
print("error: " + e.toString());
}
var tmp = vec.getNextDocument(docEv);
docEv.recycle();
docEv = tmp;
}
感谢所有回复。