根据自定义列表中的“用户或用户组”栏,判断当前用户与之相等,或者为用户组成员,返回值为bool类型。
public bool CheckCurrentInField(SPListItem item, string field)
{
SPWeb web = item.ParentList.ParentWeb;
SPFieldUser uField = item.Fields[field] as SPFieldUser;
if (!uField.AllowMultipleValues) //允许多重选择
{
SPFieldUserValue userValue = new SPFieldUserValue(web, item[field].ToString());
return IsCurrentUserInSPFieldUserValue(web, userValue);
}
else
{
SPFieldUserValueCollection userValues = item[field] as SPFieldUserValueCollection;
foreach (SPFieldUserValue userValue in userValues)
{
if (IsCurrentUserInSPFieldUserValue(web, userValue))
{
return true;
}
}
}
return false;
}
private static bool IsCurrentUserInSPFieldUserValue(SPWeb web, SPFieldUserValue userValue)
{
//所存值为用户
if (userValue.User != null)
{
return userValue.User.LoginName == web.CurrentUser.LoginName;
}
//所存值为用户组
else
{
SPGroup group = web.Groups.GetByID(userValue.LookupId);
return group.ContainsCurrentUser;
}
}