2013-11-25 1 views
0

SharePoint Designer에서 "외부 콘텐츠 형식"으로 만든 SharePoint 목록과 동기화되는 Sql-Table에 EmployeeID 열이 있습니다. 우리 회사의 Active Directory 계정에도 EmployeeID 필드가 있습니다. 페이지가로드 될 때 사용자 로그인 이름을 읽거나 Active Directory에 EmployeeID를 쿼리하고 검색된 SharePoint에서 EmployeeID를 사용하여 목록을 필터링하려면 어떻게해야합니까?Sharepoint, 쿼리 Active Directory 및 필터 목록에 사용자 이름 읽기

P. 저는 Silverlight Webpart와 WCF Servie로이 작업을 수행 할 수있었습니다. 그러나이 작업은 기본 SharePoint에서 수행해야합니다. 

답변

0

여기에 내가 AD 쿼리하는 데 사용하는 코드입니다 :

public class ADHelper 
{ 
     public static Employee getUserName(string loginName) 
     { 
      PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 
      UserPrincipal principal = new UserPrincipal(ctx); 
      principal.SamAccountName = Regex.Replace(loginName, ".*\\\\(.*)", "$1", RegexOptions.None); 

      // create your principal searcher passing in the QBE principal  
      PrincipalSearcher srch = new PrincipalSearcher(principal); 

      // find all matches 
      Employee employee = new Employee(); 
      foreach (var found in srch.FindAll()) 
      { 
       UserPrincipal principal2 = (UserPrincipal)found; 
       //FirstName 
       employee.FirstName = principal2.GivenName; 
       //Middle Name 
       employee.MiddleName = principal2.MiddleName; 
       //LastName 
       employee.LastName = principal2.Surname; 
      } 
      return employee; 
     } 
    } 

    public class Employee 
    { 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string MiddleName { get; set; } 
     public string getFullName() 
     { 
      return LastName + ", " + FirstName + " " + MiddleName; 
     }  
    } 

는 그리고 이것은 내가 셰어 포인트에서 호출하는 방법입니다

ADHelper.getUserName(SPContext.Current.Web.CurrentUser.LoginName); 
관련 문제