需要帮助 - 如何在SharePoint 2010中更新类型用户的ListItem?
-
16-10-2019 - |
题
我正在尝试更新一个具有用户内容类型字段的列表,在该列表中,我在其中保存从People Picker中选择的用户名称。
现在,我的要求是在该列表项目中添加/删除特定人员。我正在尝试使用此代码来添加一个人,但是它正在删除所有其他用户并在列表中添加新用户。
我能够将用户添加到组中,但没有将其添加到ListItem中。
这是我的代码片段::
spweb myweb = site.openweb(); myweb.allowunsafeupdates = true; SpGroup成员组= myWeb.SiteGroups [“ groupName”];
if (SPContext.Current.Site.OpenWeb().CurrentUser != null && membersgroup != null)
{
membersgroup.AddUser(SPContext.Current.Site.OpenWeb().CurrentUser);
SPRoleDefinition role = myweb.RoleDefinitions["Contribute"];
SPRoleAssignment roleAssignment = new SPRoleAssignment(membersgroup);
roleAssignment.RoleDefinitionBindings.Add(role);
myweb.BreakRoleInheritance(true);
myweb.RoleAssignments.Add(roleAssignment);
myweb.Update();
SPList settingsLists = myweb.Lists["CommunitySettings"];
SPListItem itemToUpdate = settingsLists.Items[0];
itemToUpdate["MembersJoined"] = SPContext.Current.Site.OpenWeb().CurrentUser;
itemToUpdate.Update();
settingsLists.Update();
}
myweb.AllowUnsafeUpdates = false;
请帮助我添加并删除用户。
提前致谢。
这是答案...
myweb.allowunsafeupdates = true;
SPGroup membersgroup = myweb.SiteGroups[string.Format("{0}-Member", myweb.Title)];
if (SPContext.Current.Site.OpenWeb().CurrentUser != null && membersgroup != null)
{
membersgroup.AddUser(SPContext.Current.Site.OpenWeb().CurrentUser);
SPRoleDefinition role = myweb.RoleDefinitions["Contribute"];
SPRoleAssignment roleAssignment = new SPRoleAssignment(membersgroup);
roleAssignment.RoleDefinitionBindings.Add(role);
myweb.BreakRoleInheritance(true);
myweb.RoleAssignments.Add(roleAssignment);
myweb.Update();
SPList settingsLists = myweb.Lists["CommunitySettings"];
SPListItem itemToUpdate = settingsLists.Items[0];
SPUser currentUser = SPContext.Current.Site.OpenWeb().CurrentUser;
SPFieldUserValue userValue = new SPFieldUserValue(myweb, currentUser.ID, currentUser.Name);
Microsoft.SharePoint.SPFieldUserValueCollection collection = (Microsoft.SharePoint.SPFieldUserValueCollection)itemToUpdate["MembersJoined"];
collection.Add(userValue);
itemToUpdate["MembersJoined"] = collection;
itemToUpdate.Update();
settingsLists.Update();
}
myweb.AllowUnsafeUpdates = false;
解决方案
您不应该拨打所有这些呼叫OpenWeb() - 检查您的处置模式。如果您搜索Google,很多信息。
一边,为了在项目上设置价值,我 思考 你想要类似的东西
SPUser currentUser = ...
SPFieldUserValue f = new SPFieldUserValue();
f.User = currentUser;
item["MembersJoined"] = f;
其他提示
USR SPFieldUserValue
班级。
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduservalue.aspx