在组中添加用户

add a user in a group

我希望能够将用户作为成员添加到现有组(Newsletter)中。

到目前为止,使用我的代码创建了一个包含所有用户和新成员的新组。

因此,代码没有插入用户,而是与用户建立了一个新组(时事通讯)。

<xp:this.data>
    <xp:dominoDocument var="usergroup"
        databaseName="contacts/webusers.nsf" formName="(46Group)"
        action="editDocument" computeWithForm="onsave">
    </xp:dominoDocument>
</xp:this.data>
<xp:br></xp:br>
<xp:inputText id="fullname" value="#{viewScope.fullname}"></xp:inputText>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button value="Add new user" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
    <xp:actionGroup>

        <xp:executeScript>
            <xp:this.script><![CDATA[#{javascript:var who = @DbLookup("contacts/webusers.nsf","($VIMGroups)","Newsletter",3);
              var newone = getComponent("fullname").getValue();
              who = who + ", "+newone;
              usergroup.replaceItemValue("Members",who);
             usergroup.replaceItemValue("ListName","Newsletter");
             usergroup.save();}]]></xp:this.script>
        </xp:executeScript>
        <xp:openPage name="/login.xsp"></xp:openPage>
    </xp:actionGroup>
</xp:this.action>
</xp:eventHandler>
</xp:button>

编辑

新代码:

var ndb = session.getDatabase("","contacts/webusers.nsf")
var d = ndb.getView("($VIMGroups)").getDocumentByKey("Newsletter")
var newArr = new Array(d.getItemValue("Members")); 
newArr =newArr + ", another user";
d.replaceItemValue("Members",newArr);
d.save(true,false);

根据 Thomas 的建议,我更改了代码。 用户被添加到成员中,但是被添加了 x 次。 x 是现有成员的数量。我也尝试通过推送添加成员,但这不起作用。如何以正确的方式在数组中添加成员?

"usergroup" 数据源未连接到组文档,因此数据源会在您加载页面时创建一个新文档

您需要将您的数据源连接到组文档,设置完成后您无需执行 dblookup,只需将新用户添加到文档数据源字段并保存即可。

您应该能够连接您的数据源做这样的事情,(未测试)

var ndb = session.getDatabase("","contacts/webusers.nsf")
var d = ndb.getView("($VIMGroups)").getDocumentByKey("Newsletter")
return d.getUniversalID()

这是您可以在按钮中使用的一些工作代码,我不得不删除数据源,因为出于安全原因不允许我保存它,

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:inputText id="inputText1"></xp:inputText>
    <xp:button value="Add new user" id="button1">
        <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:var ndb = sessionAsSignerWithFullAccess.getDatabase("server","names.nsf")
var d = ndb.getView("($VIMGroups)").getDocumentByKey("Newsletter")
var members = d.getItemValue("Members")
members.add(getComponent("inputText1").getValue())
d.replaceItemValue("Members",members)
d.save()}]]></xp:this.action>
        </xp:eventHandler>
    </xp:button>
</xp:view>