0

在此处输入图像描述

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

下面是删除按钮的代码:

<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>

上面的代码有效,但删除按钮需要单击两次才能工作,并且必须按顺序排列,也就是说,如果单击“测试 6”,它不会删除,因为“测试 5”挡住了。

我尝试使用 getdocumentbykey() 但需要对视图进行分类,然后显示多个条目。在这种情况下,它会显示很多空白卡片。

您的帮助将不胜感激。

4

2 回答 2

0

但是,我们需要查看您的重复代码,只要您将重复的 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);
于 2016-12-19T09:59:41.870 回答
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;
}

谢谢大家的回复。

于 2016-12-19T10:22:43.440 回答