Xpages - 通过单击重复项目的按钮添加标记

时间:2016-12-16 14:36:17

标签: xpages lotus-notes lotus-domino xpages-ssjs ssjs

enter image description here

上面的卡片通过重复填充,视图未分类。我现在要添加的是能够以任何顺序将删除标记附加到任何卡上。

以下是删除按钮的代码:

<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()但是需要对视图进行分类,然后显示多个条目。在这种情况下,它会显示很多空白卡片。

我们将不胜感激。

2 个答案:

答案 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;
}

感谢所有回复。