Silverlight용으로 SharePoint 2010 사용자 선택 컨트롤 작성

최초 문서 게시일: 2011년 8월 10일 수요일

SharePoint 개발자용 Silverlight 도구 상자에는 사용자 선택 컨트롤이 빠져 있습니다. SharePoint에서 제공하는 컨트롤을 웹 파트 또는 사용자 지정 레이아웃 페이지(PeopleEditor 클래스)에서 사용할 수 있습니다. 그러나 Silverlight 코드는 모두 클라이언트 쪽에서 실행되므로 이러한 요소에 사용할 수 있는 기본 제공 솔루션은 없는 상태입니다. 최근에 한 프로젝트를 진행하면서 이 기능이 꼭 필요했는데, 비교적 간단하게 컨트롤을 작성할 수 있었습니다. 제가 작성한 No-UI-Talent 선택 컨트롤(Silverlight에서 팝업으로 구현됨)의 스크린샷이 아래에 나와 있습니다.

 

 

이 컨트롤이 작동하는 데 핵심적인 역할을 하는 요소는 SharePoint에서 기본적으로 제공되는 웹 서비스인 사용자 웹 서비스입니다. 제 경우에는 SearchPrincipals라는 메서드를 사용하여 검색 상자에 입력된 텍스트를 가져온 다음 가능한 일치 항목 목록을 찾았습니다. 저는 사용자를 한 명만 찾으면 됐지만 이 컨트롤을 통해 그룹이나 메일 그룹, SharePoint 보안 그룹을 찾을 수도 있습니다. 사용자가 이름을 입력하도록 한 다음 웹 서비스에서 ResolvePrincipals 메서드를 호출하는 방식으로 자체 입력 컨트롤 버전을 구현할 수도 있습니다. 다음은 참고할 만한 몇 가지 구현 세부 정보입니다.

 

  • 메서드는 PrincipalInfo 개체의 ObservableCollection을 반환합니다. 사용자가 좀 더 쉽게 사용할 수 있도록, DisplayName 및 AccountName이 포함된 PickerEntry라는 사용자 지정 클래스를 만들었습니다. PrincipalInfo 클래스에는 Department 및 Email의 속성도 포함되어 있으므로 필요한 경우 활용할 수 있습니다. 제 경우에는 클래스에서 ToString() 메서드를 재정의하여 DisplayName 속성을 반환하도록 했습니다. 이 방법을 통해 목록 상자에 원하는 이름을 표시할 수 있었으며, 사용자를 선택할 때 선택한 사용자의 계정 이름을 확인할 수 있었습니다.
  • 컨트롤 구현 과정에서 현재 SharePoint 사이트로부터 웹 서비스 진입점을 사용할 수 있도록 구성하고자 했습니다. 이 작업은 Silverlight에서 수행하기는 다소 까다로웠습니다. 다행히도 아래 코드를 통해 구성을 완료할 수 있었습니다.

 

//get info on the current host

string curUrl = HtmlPage.Document.DocumentUri.AbsoluteUri.ToString();

 

//get the host name; note that this assumes the user has rights to the root site

//site collection; that may not be true in your scenario

Uri curUri = new Uri(curUrl);

HostName = curUri.Scheme + "://" + curUri.Host + ":" + curUri.Port.ToString();

 

//use the host name property to configure the request against the site in

//which the control is hosted

PeopleWS.PeopleSoapClient ps = new PeopleWS.PeopleSoapClient();

ps.Endpoint.Address =

new System.ServiceModel.EndpointAddress(HostName + "/_vti_bin/People.asmx");

 

이 코드는 주목하여 살펴볼 필요가 있으므로, 이 게시물에 사용자 컨트롤용 코드를 함께 게시합니다. 여러 가지 이유로 인해 전체 프로젝트를 포함할 수는 없지만, 이 게시물의 내용과 컨트롤 코드 자체만으로도 저와 비슷한 작업을 훨씬 쉽게 수행하실 수 있을 것입니다.

이 문서는 번역된 블로그 게시물입니다. 원본 문서는 Writing A SharePoint 2010 People Picker Control for Silverlight를 참조하십시오.