블로그 이미지
정홍주
Azure에 대한 내용뿐만 아니라 새로운 트렌드로 빅데이터, BI, SharePoint, 앱 등의 내용을 다룹니다.

calendar

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Notice

2011.05.11 08:30 SharePoint/SharePoint 2010

유효성 검사, 목록


SharePoint 2010
의 목록에서 유효성 검사에 대한 다양한 내용이 있는데 앞에서는 코드를 통한 내용을 살펴보았습니다. 하지만 SharePoint 2010에서는 새롭게 열, 목록에 대한 유효성 검사를 제공하고 있습니다. 웹 페이지를 통해 손쉽게 설정할 수 있습니다.

 

먼저 열의 유효성 검사에 대한 내용을 알아보겠습니다. 해당 목록의 설정 페이지에서 검사할 열을 클릭하면 아래 부분에 열 유효성 검사라는 링크를 볼 수 있습니다.



확장하면 아래와 같이 보입니다. 간단하게 제목에 “test” 라는 말이 들어오면 메시지를 나타내보도록 하겠습니다. 수식은 유효한 식을 나열하는데 SQL 구문과 유사하게 작업할 수 있으며 수식이 거짓인 경우 사용자 메시지가 나타나게 됩니다.



실행해서 결과를 테스트합니다.


 

필수 열인데 값을 입력하지 않거나 정수 형식인데 문자를 입력하면 기본적으로 열 유효성 검사가 수행됩니다. 간단하게 열 유효성 검사를 확인할 수 있습니다.

 

이제 목록의 유효성 검사를 알아봅니다. 열 유효성 검사에서는 다른 열을 참조할 수 없습니다. 목록에서는 다른 열과 비교하여 검사할 수 있습니다. 목록의 유효성 검사는 해당 목록의 설정 페이지에 보면 일반 설정에 유효성 감사 설정이라는 메뉴를 살펴볼 수 있습니다. 클릭하면 아래와 같은 화면을 볼 수 있습니다.

 

공지사항의 만료 일자와 만든 날짜를 비교해서 만든 날짜보다 작을 경우 메시지를 나타내게 유효성 검사를 설정 할 수 있습니다.


 

과거 일자를 만료 날짜로 설정하면 아래와 같은 결과를 볼 수 있습니다. 

코딩 없이 열, 목록 유효성 검사를 손쉽게 처리한 내용을 살펴보았습니다.

신고
posted by 정홍주
2011.05.04 08:30 SharePoint/SharePoint 2010

유효성 검사이벤트 수신기 Custom Alert

 

SharePoint 2010의 목록에서 유효성 검사에 대한 다양한 내용이 있는데 앞에서는 Custom Error Page Redirect 시켰지만 여기에서는 Custom Alert을 나타내도록 해보겠습니다. 대화상자로 열기가 아닌 경우에는 Custom Alert이 더 효과적일 수 있습니다. 실무에서 비슷한 요구사항이 있어 정리를 해봅니다.



이벤트 수신기를 생성하는 등의 내용은 동일하니 설명은 생략하겠습니다.

관련 내용은 아래 링크를 참조하십시오.

http://redju.tistory.com/48

 

이벤트 수신기에서 유효성 검사에 맞지 않을 경우(잘못된 입력일 경우)의 코드를 아래와 같이 수정합니다.

l  HttpContext를 이용하는 방법


l  properties.RedirectUrl를 이용하는 방법


위의 방법 둘 다 요청된 주소를 Get 방식으로 Custom Error 페이지로 전달해주고 있습니다.

CustomError 페이지에서는 Get 방식을 검사하여 eventError 인 경우 Alert으로 메시지를 나타내고 요청된 주소를 다시 보여주게 됩니다.

 

자 잘못된 입력일 경우 Custom Alert를 살펴보시죠~

 

확인 버튼을 누르면 원래 요청된 페이지로 이동합니다.

간단하게 유효성 검사의 일환으로 Custom Alert을 살펴보았습니다.

신고
posted by 정홍주
2011.05.02 08:30 기타/Windows Phone

 

VS 2010 에서 Windows Phone Application 프로젝트를 생성해서 프로젝트 구조 및 Windows Phone 7 응용 프로그램에 대한 내용을 알아보고 간단한 디자인과 코드를 추가해서 디버깅, 실행해보도록 하겠습니다.

먼저 VS 2010을 시작하여 Silverlight for Windows Phone 프로젝트를 생성합니다.

프로젝트이름을 HelloWindowsPhone 이라는 프로젝트로 생성합니다.
 

생성된 프로젝트의 디자인, 솔루션 탐색기, App.xaml 등을 살펴봅니다 

프로젝트를 빌드하고 프로젝트를 시작해봅니다. 잠시 시간이 지나면 아래와 같은 에뮬레이터 화면을 볼 수 있습니다. 

    

이제 간단한 사용자 디자인을 해보도록 합니다. 아래와 같은 디자인으로 구성됩니다.

 

 

솔루션 탐색기에서 MainPage.xaml을 더블클릭하고 XAML 편집기에서 아래와 같이 코드를 작성합니다. 디자인 창으로 컨트롤을 끌어다 놓거나 XAML을 편집합니다.

Grid RowDefiniton을 아래와 같이 추가합니다  

<Grid.RowDefinitions>

<RowDefinition Height="Auto"/>

<RowDefinition Height="Auto"/>

<RowDefinition Height="*"/>

</Grid.RowDefinitions>


StackPanel 부분을 아래와 같이 변경합니다.

<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="24,24,0,12">

<TextBlock x:Name="ApplicationTitle" Text="Windows Phone 7" Style="{StaticResource PhoneTextNormalStyle}"/>

<TextBlock x:Name="PageTitle" Text="Hello Phone" Margin="-3,-8,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>

</StackPanel 

ContentGrid의 하위 콘텐트를 아래와 같이 구성합니다. TextBox Button으로 구성됩니다.

<!--ContentPanel - place additional content here-->

<Grid x:Name="ContentGrid" Grid.Row="1">

<Grid.ColumnDefinitions>

<ColumnDefinition Width="*" />

<ColumnDefinition Width="Auto"/>

</Grid.ColumnDefinitions>

<TextBox Grid.Column="0" Name="MessageTextBox" FontSize="{StaticResource PhoneFontSizeExtraLarge}" Margin="20,20,10,20"/>

<Button Grid.Column="1" Name="ClickMeButton" Content="Click Me" HorizontalAlignment="Right" Padding="4" Margin="10,20,20,20" />

</Grid 

방금 위에서 수정한 Grid 아래 TextBlock을 아래와 같이 추가합니다.

<Grid Grid.Row="2">

<TextBlock Name="BannerTextBlock" FontSize="30"

Foreground="#FFFF9A00" HorizontalAlignment="Stretch"

TextWrapping="Wrap" TextAlignment="Center" FontWeight="Bold" />

</Grid
 

Click-Me 라는 버튼을 더블 클릭하거나 속성 창의 이벤트에서 Click 이벤트를 생성합니다

  

이벤트의 C# 코드는 아래와 같이 작성합니다.

private void ClickMeButton_Click(object sender, RoutedEventArgs e)

{

BannerTextBlock.Text = MessageTextBox.Text;

MessageTextBox.Text = String.Empty;

 

작성한 C# 코드의 첫 라인에 커서를 위치시키고 F9를 클릭해서 중단점을 아래와 같이 설정합니다 

 

에뮬레이터에서 장치의 키보드를 이용해서 값을 입력하고 버튼을 클릭하면 중단점으로 이동하게 됩니다 

  

중단점에서 지역 창이나 커서를 이용해서 사용자가 입력한 값을 확인할 수 있습니다.

F11을 눌러 한 단계씩 실행해봅니다 

 

이상으로 Windows Phone 7 Hello World를 살펴보았습니다. C#은 동일하고 XAML Silverlight 3 에서의 내용과 동일합니다. C# Silverlight 에 대한 내용을 알고 계시면 Windows Phone 7 에 쉽게 접근이 가능합니다.

VS 2010 뿐만 아니라 Expression Blend for Windows Phone을 통해서 XAML 디자인과 애니메이션 등을 진행할 수 있습니다.

 

신고
posted by 정홍주
2011.03.15 08:30 SharePoint/SharePoint 2010

이번 내용은 유효성 검사에 대한 내용을 다루어 보겠습니다.

유효성 검사는 코딩 없이 할 수 있도록 SharePoint 2010에서는 제공하는 것도 있으며 이벤트 수신기를 통해서도 처리할 수 있습니다. 기본적으로 제공되는 것은 다음에 다루고 이벤트 수신기를 이용한 Custom Error page 에 대한 내용을 다루어 보겠습니다.

 

이벤트 수신기에 대한 일반적인 내용은 앞에서 이미 다루었고 아래 링크를 참조하면 됩니다.

http://redju.tistory.com/13

 

공지 사항의 제목에 ‘test’ 라는 값을 입력하면 Custom Error Page Redirection 되는 내용을 알아보도록 하겠습니다.

Visual Studio 2010을 이용해서 이벤트 수신기를 생성합니다. 

이벤트는 목록 항목의 항목 추가중(Adding) 이벤트를 생성하도록 하겠습니다. 

Visual Studio 2010SharePoint 2010 도구는 기본적인 여러 사항을 다 생성해주고 로직에만 신경쓸 수 있도록 개발자 경험을 향상시켜준 것을 이벤트 수신기를 통해 알 수 있습니다.

생성된 이벤트 코드를 볼 수 있습니다. 코드에는 제목을 검사하여 맞지 않다면 Custom Error Page Redirect 시켜보도록 하겠습니다. 이전 버전에서는 System.Web 의 클래스를 통해서 Redirect 되도록 처리해야만 했지만 SharePoint 2010에서는 properties 가 기본적으로 제공되고 있습니다.

아래와 같은 코드를 작성합니다.

public override void ItemAdding(SPItemEventProperties properties)

       {

           base.ItemAdding(properties);

 

           if (properties.AfterProperties["Title"].ToString().ToLower() == "test")

           {

               properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;

               properties.RedirectUrl = "/_layouts/EventDemo/CustomError.aspx";

           }

       }

 

물론 응용 프로그램 페이지를 통해 에러를 표시해주어야 하겠죠. 

이벤트 수신기를 특정 공지사항에 연결하고 응용 프로그램 페이지에 에러 내용을 표시해줍니다. 또는 Get 방식으로 매개변수를 받아 추가적인 처리가 가능합니다.

배포해서 결과를 테스트해봅니다. 

프로그램으로 유효성 검사를 처리하는 방법을 알아보았습니다. SharePoint 2010의 이벤트 수신기를 통해 Custom Error Page Redirect 되는 내용이며 다른 여러 방법도 있습니다. 그런 방법들은 다음에서 다루도록 하겠습니다.

신고
posted by 정홍주
2011.01.23 22:21 기타/Windows Phone

UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.


 

MSDN 영문 사이트의 Main Page에 보면 Windows Phone Developer Tool Release 라는 내용에 대한 이미지를 볼 수 있습니다. 릴리스 시점은 추석 연휴 시작하기 전인 9 16일입니다.

아직 관련 소식에 대한 업데이트가 없어 릴리스에 대한 내용을 알아보도록 하겠습니다.

이미지를 클릭하면 블로그로 이동해서 내용을 살펴보시면 여러 유용한 정보를 알려주고 있으니 Windows Phone 7에 관심 있는 분은 방문해보시기 바랍니다.

http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/09/16/windows-phone-developer-tools-are-final.aspx

 

도구가 새로 릴리스 되었으니 다운로드 받아 설치해보도록 하겠습니다. 개발도구 등의 사이트는 아래 사이트를 방문하면 됩니다.

http://developer.windowsphone.com/windows-phone-7/

이전 버전의 도구(Beta) 가 설치되어 있다면 제거합니다. 도구를 다운로드 받아 설치를 진행합니다. 이전 버전보다는 더 많은 구성요소가 설치됩니다. Expression Blend 4 가 있다면 Expression Blend 4 Add-in for Windows Phone 도구도 설치됩니다.

현재는 Windows Phone Developer Tool 은 영문 버전만 제공되고 있습니다.

설치가 다 되고 나면 Visual Studio 2010에서 새 프로젝트를 생성하려고 하면 Silverlight for Windows Phone에 대한 내용을 볼 수 있으며 아래와 같은 프로젝트 템플릿을 확인할 수 있습니다.

Expression Blend 4 에서도 마찬가지로 Windows Phone에 대한 프로젝트 템플릿을 확인할 수 있습니다.


프로젝트 템플릿을 보면 이전 버전(Beta)와 다르게 CodePlex에서 소개하던 Panorama, Pivot 에 대한 프로젝트 템플릿이 나타나는 것을 알 수 있습니다.

 

아직 설치를 하지 않으셨다면 설치해서 Windows Phone 개발을 시작해보시기 바랍니다.

앞으로의 블로깅은 모바일에 대한 새로운 기능 위주로 작성할 예정입니다.

 



신고
posted by 정홍주
2011.01.23 22:15 SharePoint/SharePoint 2010
UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

Client Object Model에 대해서 다시 한번 정리를 해보도록 하겠습니다.

 

SharePoint 개체를 액세스 하기 위해서는 Microsoft.SharePoint.dll 이 있어야 하는데 원격 클라이언트에서는 Microsoft.SharePoint.dll 어셈블리를 접근하기 곤란합니다. SharePoint 2010에서는 Client Object Model을 제공해서 원격 클라이언트에서 손쉽게 SharePoint 데이터를 액세스할 수 있습니다.

 

아래 그림은 Client Object Model을 설명하면서 언급하는 그림인데 저는 먼저 코드를 나열하고 살펴봅니다.

Client Object Model을 사용할 수 있는 주된 이유는 아래 그림의 SharePoint 서버쪽의 Client.svc 때문입니다. Client.svc가 서버 개체 모델을 액세스해서 JSON 포맷으로 결과를 반환해주게 되며 클라이언트에서는 Proxy를 통해 손쉽게 액세스하게 됩니다.


 

 

앞에서 한번 살펴보았던 표를 다시 한번 정리 합니다.

SP 이름만 제외하면 서버, 클라이언트 개체 모델이 유사하다는 것을 기억 하시죠?

Server
(Microsoft
.SharePoint)

.NET Managed
(Microsoft.SharePoint
.Client)

Silverlight
(Microsoft.SharePoint
.Client.Silverlight)

JavaScript
(SP.js)

SPContext

ClientContext

ClientContext

ClientContext

SPSite

Site

Site

Site

SPWeb

Web

Web

Web

SPList

List

List

List

SPListItem

ListItem

ListItem

ListItem

SPField

Field

Field

Field

 

.NET Managed Client OM

-       Microsoft.SharePoint.Client.dll

-       Microsoft.SharePoint.Client.Runtime.dll

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI

 

Silverlight Client OM

-       Microsoft.SharePoint.Client.Silverlight.dll

-       Microsoft.SharePoint.Client.Silverlight.Runtime.dll

(C:\Program Files\Common Files\Microsoft Shared\
Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin)

 

JavaScript Client OM

<SharePoint:ScriptLink ID="ScriptLink1" Name="SP.js" runat="server" OnDemand="true"

    Localizable="false" />

 

 

아래 주소를 참고하시면 성능 향상 등의 더 높은 수준의 코드를 살펴보실 수 있습니다.

 

http://msdn.microsoft.com/en-us/library/ee857094(office.14).aspx



신고

'SharePoint > SharePoint 2010' 카테고리의 다른 글

REST – Silverlight  (0) 2011.01.23
REST -.NET  (0) 2011.01.23
Client Object Model – 정리  (0) 2011.01.23
Client Object Model - Javascript(2)  (0) 2011.01.23
Client Object Model - Javascript(1)  (0) 2011.01.23
Client Object Model – Silverlight (2)  (0) 2011.01.23
posted by 정홍주
2011.01.23 22:13 SharePoint/SharePoint 2010
UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

앞에서 ExecuteQueryAsync 에 대한 내용과 Silverlight 웹 파트에 대한 내용을 알아보았는데 이번 블로그에서는 Silverlight Client Object Model또 다른 예를 살펴보도록 하겠습니다.

 

Silverlight 응용 프로그램을 생성하고 아래와 같이 디자인 합니다.

Silverlight Client Object Model 어셈블리를 참조 추가합니다.

ButtonClick 이벤트를 발생시키고 코드 보기에서 using 구문에 아래 코드를 작성합니다.

using Microsoft.SharePoint.Client;

 

생성자 위에 비동기적으로 UI 스레드를 처리하기 위해 아래 코드를 추가합니다. Dispatcher BeginInvoke 에서 사용되어야 합니다. ListInfo LoadQuery를 통해 List 개체를 담게 됩니다.

private delegate void UpdateUIMethod();

IEnumerable<List> listInfo;   

 

아래는 목록 정보를 액세스하는 코드입니다. Button Click 이벤트에 아래 코드를 통해 LoadQuery 메서드를 호출합니다.

ClientContext context = new ClientContext("http://sp.webtime.co.kr");


Web site = context.Web;

ListCollection collList = site.Lists;


context.Load(site, website => website.Title);

            listInfo = context.LoadQuery(

                collList.Include(

                    list => list.Title).Where(

                    list => list.OnQuickLaunch== true));


context.ExecuteQueryAsync(Succeeded, Failed);


빠른 실행에 표시되는 ListTitle을 담게 됩니다.

 

DisplayInfo 메서드에서 ListBox 컨트롤에 바인딩하는 코드입니다.

private void Succeeded(object sender, ClientRequestSucceededEventArgs e)

        {

            UpdateUIMethod updateUI = DisplayInfo;

            this.Dispatcher.BeginInvoke(updateUI);

        }


private
void DisplayInfo()

        {

       

            this.listBox1.DisplayMemberPath = "Title";

            this.listBox1.ItemsSource = listInfo.ToList();

        }


private
void Failed(object sender, ClientRequestFailedEventArgs e)

        {

            MessageBox.Show("Create Fail");

        }

 

 

 

 Xap 파일을 라이브러리에 업로드하고 Silverlight 웹 파트를 추가해서 경로를 지정합니다.

버튼을 클릭하면 빠른 실행에 있는 목록들의 Silverlight Client Object Model을 이용해서 알 수 있습니다.


SDK의 아래 주소를 참고하실 수 있습니다.

http://msdn.microsoft.com/en-us/library/ee538971(office.14).aspx

 

Silverlight Client Object Model을 알아보았고 다음 블로그에서 Javascript를 이용한 내용을 알아보도록 하겠습니다.


신고
posted by 정홍주
2011.01.23 22:12 SharePoint/SharePoint 2010
UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

앞에서 .NET Managed Client Object Model에 대한 내용을 알아보았습니다. 이번 블로그에서는Client Object Model(개체 모델) Silverlight을 이용해서 액세스해보도록 하겠습니다.

 

SharePoint 2010에서 Media 웹 파트, Silverlight 웹 파트가 기본적으로 제공이 되고 있어 웹 파트를 만들지 않아도 되고 그냥 콘텐트를 생성하면 됩니다.

Client OM을 액세스하기 전에 Silverlight 지원되는 내용을 먼저 알아보겠습니다.

 

1. 사이트 작업의 기타 옵션을 클릭해서 여러 목록이나 라이브러리를 생성할 수 있습니다. 클릭했을 때의 화면이 Silverlight 콘텐트입니다.


2. Silverlight 미디어 웹 파트를 제공해주고 있습니다. 또한 이미지 라이브러리에 동영상을 업로드해서 바로 재생하기가 가능합니다.


3. Silverlight 웹 파트를 제공하고 있습니다.


그 외 지원되는 내용도 있지만 생략하고 바로 Silverlight을 통해 Client OM을 액세스해보도록 하겠습니다.

본격적으로 Silverlight Client Object Model을 살펴보도록 하겠습니다.

Visual Studio 2010에서 Silverlight 응용 프로그램을 생성합니다.

프로젝트이름은 SilverlightClientOMDemo으로 지정했습니다. Silverlight 응용 프로그램의 디자인은 아래와 같이 TextBox 컨트롤 2개와 Button 컨트롤 1개로 구성되어 있습니다.


Client OM을 액세스하기 위해 아래 어셈블리를 참조 추가합니다.

Microsoft.SharePoint.Client.Silverlight.dll

Microsoft.SharePoint.Client.Silverlight.Runtime.dll

 

아래 경로에 어셈블리들이 위치해 있습니다.

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin

 

Using 구문에 다음과 같은 코드를 입력합니다.

using Microsoft.SharePoint.Client;

 

 

생성자 위에 비동기적으로 UI 스레드를 처리하기 위해 아래 코드를 추가합니다. Dispatcher BeginInvoke 에서 사용되어야 합니다.

private delegate void UpdateUIMethod();

 

 

Client OM Button Click 이벤트에서 아래와 같은 코드를 작성합니다.

ClientContext context = new ClientContext("http://sp.webtime.co.kr");

Web site = context.Web;


List list = context.Web.Lists.GetByTitle("HJ");


ListItem listitem = list.AddItem(new ListItemCreationInformation());

listitem["Title"] = this.txtTitle.Text;

listitem["Body"] = this.txtBody.Text; ;

listitem.Update();      


context.ExecuteQueryAsync(Succeeded, Failed);

 

맨 마지막 라인을 제외하면 .NET Managed Client Object Model가 동일합니다.

Succeeded, Failed 에 대한 메서드는 아래와 같이 정의합니다.

private void Succeeded(object sender, ClientRequestSucceededEventArgs e)

        {

            UpdateUIMethod updateUI = DisplayInfo;

            this.Dispatcher.BeginInvoke(updateUI);

        }


private
void DisplayInfo()

        {

            this.lblInfo.Text = "Success ";

        }


private
void Failed(object sender, ClientRequestFailedEventArgs e)

        {

            MessageBox.Show("Create Fail");

        }

 

Silverlight 응용 프로그램을 빌드하여 이상이 없으면 xap 파일을 SharePoint 2010 사이트의 문서 라이브러리로 업로드합니다. 14 폴더의 ClientBin 폴더에 배포할 수도 있습니다.

업로드하고 나서 xap 파일을 오른쪽 클릭하여 바로 가기를 복사합니다.


HJ
공지사항을 클릭하여 페이지 편집으로 Silverlight 웹 파트를 추가합니다.


Silverlight 웹 파트 대화 상자에서 이전에 복사했던 바로 가기를 붙여넣기 합니다.


페이지 편집을 중지하고 TextBox 에 값을 입력하고 버튼을 클릭합니다.


공지사항 내용 보기를 통해서도 확인이 가능합니다.


Silverlight Client Object Model을 액세스 해보았습니다. 비동기적으로 호출하는 것(ExecuteQueryAsync)만 유념하면 .NET Managed Client Object Model과 거의 동일합니다.

다음 블로그에서는 Silverlight Client Object Model의 다른 예(LoadQuery)를 알아보도록 하겠습니다.

신고
posted by 정홍주
2011.01.23 22:11 SharePoint/SharePoint 2010
UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

이전 블로그에서 설명한 SharePoint 2010 데이터 기술 중에서 Client OM(개체 모델)에 대한 내용을 알아보도록 하겠습니다.

SharePoint 2010 데이터 기술에 대한 내용은 아래 주소를 참고하시기 바랍니다.

http://www.vsts2010.net/224

 

SharePoint 2010 박스 위가 아닌 원격에 떨어져 있을 경우 SharePoint 개체를 액세스하려면 웹 서비스를 통해 힘들게 해야 하지만 SharePoint 2010에서는 아주 손쉽게 접근할 수 있도록 Client OM을 제공해주고 있습니다. 생성할 수 있는 유형은 .NET, Silverlight, Javascript 를 통해 접근할 수 있습니다.

 

아래 표를 보시면 클래스와 메서드 등의 경우 서버 개체 모델과 거의 유사하게 구성되어 있습니다.

Server
(Microsoft
.SharePoint)

.NET Managed
(Microsoft.SharePoint
.Client)

Silverlight
(Microsoft.SharePoint
.Client.Silverlight)

JavaScript
(SP.js)

SPContext

ClientContext

ClientContext

ClientContext

SPSite

Site

Site

Site

SPWeb

Web

Web

Web

SPList

List

List

List

SPListItem

ListItem

ListItem

ListItem

SPField

Field

Field

Field

 

표에서 보듯이 SP 라는 글자가 없어지고 거의 동일하게 작업이 가능합니다. 하지만 일부는 변경되어 있습니다. 웹 서비스를 통해 CAML을 처리하지 않아도 API를 통해 정말 편하게 접근이 가능합니다.

 

먼저 .NET Client OM을 알아보도록 하겠습니다. 그리고 다음 블로그에서 Silverlight, Javascript를 알아보도록 하겠습니다.

 

Visual Studio 2010을 통해 WPF 응용 프로그램을 생성합니다. 이름은 WpfClientOMDemo라고 하겠습니다.

Button 컨트롤을 디자인 영역으로 드래그하고 Click 이벤트를 생성합니다.

.NET Managed Client OM을 이용하기 위해서는 아래 어셈블리를 참조해야 합니다.

Microsoft.SharePoint.Client.dll

Microsoft.SharePoint.Client.Runtime.dll

 

경로는 아래와 같습니다.

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI

코드보기로 이동하여 소스 코드에 아래 using 구문을 추가합니다.

using Microsoft.SharePoint.Client;

using SP=Microsoft.SharePoint.Client;

 

InitializeComponent() 아래 부분에 다음과 같은 코드를 입력하고 프로젝트 속성에서

.NET Framework 4.0 Client Profile .NET Framework 4.0으로 변경하고 실행해봅니다.

x86은 그대로 두고 진행하면 됩니다.

ClientContext context = new ClientContext("http://sp.webtime.co.kr");

Web site = context.Web;


context.Load(site);

context.ExecuteQuery();

site.Title = site.Title + " Client OM";

site.Update();

context.ExecuteQuery();


위 코드는 SP 라는 이름이 붙어있다면 서버 개체 모델과 동일하다는 것을 알 수 있습니다.

 

결과는 아래처럼 “Home Client OM”으로 변경되어 있습니다.


디자인 보기로 이동하여 ListBox 컨트롤을 드래그합니다.

코드 보기에서 위에서 작성한 코드는 주석처리하고 아래와 같은 코드를 입력합니다.

아래 코드는 목록들의 이름을 리스트박스에 추가해서 나타내는 내용입니다.

 

ClientContext context = new ClientContext("http://sp.webtime.co.kr");

Web site = context.Web;


ListCollection
lists = site.Lists;

IEnumerable<Microsoft.SharePoint.Client.List> listcollection =

context.LoadQuery(lists.Include(l => l.Title, l => l.Id));

context.ExecuteQuery();


listbox1.ItemsSource = listcollection;

listbox1.DisplayMemberPath = "Title";

 

 

결과는 다음과 같습니다.



작성한 코드는 주석처리하고 아래와 같은 코드를 입력합니다.

아래 코드는 사이트에 HJ 라는 공지사항을 생성하고 빠른 실행에 표시해주는 코드입니다. 이런 내용을 서버 개체 모델로 하는 것이 아니라 클라이언트 개체 모델로 해주고 있습니다.

ClientContext context = new ClientContext("http://sp.webtime.co.kr");

Web site = context.Web;


ListCreationInformation listCI = new ListCreationInformation();

listCI.Title = "HJ";

listCI.TemplateType = (int)SP.ListTemplateType.Announcements;

listCI.QuickLaunchOption = SP.QuickLaunchOptions.On;


SP.List li = site.Lists.Add(listCI);

site.Update();

 



위에서 생성한 HJ라는 공지사항에 항목을 입력해보겠습니다. 작성된 코드를 주석처리하고

HJ를 찾아서 ListItem을 생성하는 코드를 아래와 같이 작성합니다. ListItemCreationInformation 이라는 클래스를 이용합니다.

 

ClientContext context = new ClientContext("http://sp.webtime.co.kr");

Web site = context.Web;


SP.List li = site.Lists.GetByTitle("HJ");

            ListItemCreationInformation listitemCI = new ListItemCreationInformation();

SP.ListItem item = li.AddItem(listitemCI);


item["Title"] = "hongju";

item["Body"] = "Consulting Services";

item.Update();

context.ExecuteQuery();

 

HJ 라는 공지 사항에 항목이 하나 추가되어 있는 것을 아래 그림과 같이 확인이 가능합니다.




위에서 Client Object Model에 대한 개요와 .NET Managed Client Object Model에 대한 내용을 알아보았습니다. 서버 개체 모델은 서버 박스 위에서 실행되는 웹 파트나 유틸리티를 통해 처리되지만 원격의 클라이언트에서 실행되도록 하려면 SharePoint 2010에서는 Client OM을 사용할 수 있습니다. 다음 블로그에서 Silverlight Client Object Model 을 알아보도록 하겠습니다.



 


신고
posted by 정홍주
2011.01.23 22:09 SharePoint/SharePoint 2010
UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

결론은 그다지 큰 변화는 없습니다. (VS 2010, SharePoint 2010 RC 한글로 테스트했습니다.)

 

프로젝트 템플릿이 추가될 예정이지만 출시 버전에는 예전과 동일합니다. 이전 버전의 화면은 생략하겠습니다.


프로젝트 항목들도 크게 바뀐 것은 없지만 Workflow Association Form, Workflow Initiation Form이 빠져버렸습니다. 좀 지켜봐야 할 것 같습니다.


일반 웹 파트 소스 코드는 기존에는 클래스의 생성자와 CreateChildControls, RenderContents 메서드가 있었고 base 메서드를 호출해주었는데 출시 버전에서는 달랑 CreateChildControls 메서드만 아래 그림처럼 제공해줍니다.



SharePoint Explorer 의 모습도 변화 없다는 것을 확인할 수 있습니다.

RC 버전에서 본격적으로 준비를 해야 하지 않나 생각됩니다.

 출시도 되었으니 계속 블로깅 하도록 하겠습니다.






 


신고
posted by 정홍주
prev 1 2 next

티스토리 툴바