最近较频繁的在操作PeopleEditor ,于是也碰到了好些方法,现写一下,希望能帮助到大家:
protected void ueAddDefaultCCUsers() //把一个ReaderGroup组里的人员名称,赋给peditCC用户控件
{
SPGroup spGroup = new SharePointHelper().GetSPGroup("ReaderGroup");
SPUserCollection Spusercollection = spGroup.Users;
List<SPPrincipal> spPrincipals = new List<SPPrincipal>();
foreach (SPUser User in Spusercollection)
{
if (User != null)
{
spPrincipals.Add(User);
}
}
SetPeopleEditorValue(peditCC, spPrincipals);
}
调用下面的PeopleEditor方法
public void SetPeopleEditorValue(PeopleEditor peopleEditor, List<SPPrincipal> spPrincipals)
{
try
{
string principalsStr;
if (spPrincipals == null || spPrincipals.Count == 0)
principalsStr = "";
else
{
List<string> principalsStrCollection = new List<string>();
foreach (SPPrincipal principal in spPrincipals)
{
SPUser user = principal as SPUser;
SPGroup group = principal as SPGroup;
if (user != null || group != null)
principalsStrCollection.Add(principal.Name);
}
principalsStr = string.Join(",", principalsStrCollection.ToArray());
}
peopleEditor.CommaSeparatedAccounts = principalsStr;
}
catch (Exception ex)
{
Log4NetHelper.Fatal(MethodBase.GetCurrentMethod().DeclaringType, ex);
}
}
另外,我做了一个,选择一个下拉框,相对应的peditSub 这个用户控件的用户名就会改变,代码如下:
void ddlSubSystem_SelectedIndexChanged(object sender, EventArgs e)
{
using (SPSite site = new SPSite(WFWebUrl))
{
using (SPWeb web = site.OpenWeb())
{
List<Control> Contents = new Portal().GetContentByID(int.Parse(ddlSub.SelectedValue));//获取表Control的行
if (Contents.Count > 0)
{
SPUser User = web.EnsureUser(Contents[0].CreateUser); //这里是把数据库里存的string类型用户名转换成SPUser类型
if (User != null)
{
List<SPPrincipal> spPrincipals = new List<SPPrincipal>();
spPrincipals.Add(User);
new SharePointHelper().SetPeopleEditorValue(peditSub, spPrincipals);
}
}
}
}
}
方法比较简单,所以没多加注释,如有问题,可留言共同讨论。有更好的,希望也能分享出来。呵呵。。。一起进步。