在组中添加用户
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>
我希望能够将用户作为成员添加到现有组(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>