gpt4 book ai didi

sharepoint - 将所有用户从事件目录获取到共享点

转载 作者:行者123 更新时间:2023-12-04 08:53:22 24 4
gpt4 key购买 nike

我必须基于 brilliant ASPTokenInput 填充我的自动完成类 PeopleEditor 控件与我 AD 域中的所有人。反射(reflect) PeopleEditor 显示他们的 Active Directory 搜索引擎中的一团糟,所有可能有用的类都是内部的。

我的测试方法工作正常,但我需要从 AD 获取所有用户(不是共享点站点的用户)来填充我的列表:
How it looks

public string GetUsers(string filter)
{
var spWeb = SPContext.Current.Web;
SPUserCollection allusers = spWeb.AllUsers;
List<SPUser> users = allusers.Cast<SPUser>().ToList();
var query = from spUser in users.Select(usr => new {id = usr.ID, name = usr.Name})
.Where(p => p.name.IndexOf(filter, StringComparison.InvariantCultureIgnoreCase) >= 0)
select new {id = spUser.id.ToString(), spUser.name};

return new JavaScriptSerializer().Serialize(query);
}

如何像这样查询事件目录?是否可以从 sharepoint 本身检索所有 AD 连接设置?我只需要 id 和用户名来填充我的下拉列表 将它转换为 SPUserCollection 是另一件大事。

使用一些像这样的内置 SP 方法会很棒:
 [SubsetCallableExcludeMember(SubsetCallableExcludeMemberType.UnsupportedSPType)]
public static IList<SPPrincipalInfo> SearchWindowsPrincipals(SPWebApplication webApp, string input, SPPrincipalType scopes, int maxCount, out bool reachMaxCount)

最佳答案

解决方案很简单,我唯一需要的是 SharePoint 组搜索实现(如果在字段编辑器控件中指定)。 SP 有一个很好的内置方法,所以我使用它。

/// <summary>
/// Provides searching for AD or SharePoint group if specified in field setting
/// </summary>
public static class ActiveDirectorySearchProvider
{
public static IList<SPPrincipalInfo> Search(string filter, string selectionGroup, string principalType)
{
var site = SPContext.Current.Site.WebApplication;
bool reachmaxcount;
var scope = SPUtils.GetSpPrincipalType(principalType);

if (!String.IsNullOrEmpty(selectionGroup)) //search for users in SPGroup if present
{
var rawSPGroupList = SPUtility.GetPrincipalsInGroup(SPContext.Current.Web, selectionGroup, 100,
out reachmaxcount).ToList();

string lowerFilter = filter.ToLowerInvariant();

var filteredGroupList =
rawSPGroupList.Where(
pInfo =>
pInfo.LoginName.Substring(pInfo.LoginName.IndexOf('\\') + 1).StartsWith(lowerFilter) ||
pInfo.DisplayName.ToLowerInvariant().StartsWith(lowerFilter) ||
pInfo.DisplayName.ToLowerInvariant().Substring(pInfo.DisplayName.IndexOf(' ') + 1).StartsWith(
lowerFilter)).ToList();

return filteredGroupList;
}

return SPUtility.SearchWindowsPrincipals(site, filter, scope, 100, out reachmaxcount); //Search in AD instead

}

关于sharepoint - 将所有用户从事件目录获取到共享点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7886772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com