如何使用VS2010在“人员或组”字段中插入数据?

时间:2011-12-08 05:38:39

标签: c# asp.net sharepoint

现在,在我的程序中,我在SharePoint中创建了一个列'Person or Group'

- 允许多项选择:

现在在C#中,我创建了一个表单,然后从People Picker中获取数据。

我将这些数据插入列表

像这样:

{
    string strName = "8;1001";    //User.Id and User.LoginName of **single** user 
    objItem["name"] = strName;
}

现在工作正常。但我不知道如何为多个用户插入。

我尝试用“;(分号)”分开  但它提供了无效的查找值错误。

就像这样:

{
    string strName = "8;1001;2;2001";    //User.Id and User.LoginName of **2 users**
    objItem["name"] = strName;
}

4 个答案:

答案 0 :(得分:5)

以下是详细代码: -

void btnSubmit_Click(object sender, EventArgs e)
{
 //ctrlpplPicker is object of PeopleEditor
 string[] userarray = ctrlpplPicker.CommaSeparatedAccounts.ToString().Split(',');;
 SPFieldUserValueCollection usercollection = new SPFieldUserValueCollection();

 for (int i = 0; i < userarray.Length; i++)
 {
     SPFieldUserValue usertoadd = ConvertLoginAccount(userarray[i]);
     usercollection.Add(usertoadd);
 }

 SPList list = SPContext.Current.Web.Lists["user tasks"];
 SPListItem item = list.Items.Add();
 item["Team"] = usercollection;
 item.Update();

}
public SPFieldUserValue ConvertLoginAccount(string userid)
{
 SPFieldUserValue uservalue;
 using (SPSite site = new SPSite(SPContext.Current.Site.Url))
 {
     using (SPWeb web = site.OpenWeb())
     {
         SPUser requireduser = web.EnsureUser(userid);
         uservalue = new SPFieldUserValue(web, requireduser.ID, requireduser.LoginName);
     }
 }
 return uservalue;
}

答案 1 :(得分:2)

您需要在SharePoint列表中一次添加多个用户。用户的值可能来自Active Directory或元数据。所有用户都以逗号或分号分隔值的字符串形式。我们假设用户使用的格式低于“;”。

string usercontrolvalue = "dhananjay,arun,anoj,patra,mub";

以下是有关这些的完整信息: Multiple user insertion in Sharepoint list
Using the SharePoint ‘Person or Group’ field in code

您可以从中了解并实现您的功能。

答案 2 :(得分:0)

答案 3 :(得分:0)

您可以使用SPFieldUserValueCollection Class设置多值人员字段:

SPFieldUserValueCollection value = new SPFieldUserValueCollection();
value.Add(new SPFieldUserValue(web, user1.ID, user1.Name)));
value.Add(new SPFieldUserValue(web, user2.ID, user2.Name)));

objItem["name"] = value;
objItem.Update();

user1user2代表SPUser个对象的位置。

如果您只拥有用户帐户的登录名

提示 要更新单个值人员字段,您只需设置用户ID:

objItem["name"] = User.ID;