안녕하세요. 김도명입니다.

이번 포스팅에서는 SharePoint 개발의 기초가 되는 Custom Field Type을 개발하는 방법에 관해 다뤄보도록 하겠습니다.

우선, Visual Studio 2010을 통해 간단한 필드타입을 SharePoint에 추가하는 방법을 설명하도록 하겠습니다.
Hello World 정도라고 생각하시면 편할것 같습니다. ^^

우선, SharePoint 2010용 빈 프로젝트 템플릿을 하나 생성합니다. (Farm Solution)



아래는 생성된 프로젝트의 모습입니다.



해당 프로젝트는 GAC이 아닌 WebApplication에 어셈블리가 배포되도록 설정하겠습니다.



그 다음, 프로젝트의 Add > New Item을 통해 아래와 같이 필드타입이 될 Class 파일을 프로젝트에 추가합니다.



이번 포스팅에서는 일반 텍스트 기반의 필드타입을 생성해 보도록 하겠습니다.
(신규, 편집창에서 텍스트 박스가 표시되고, 상세보기 창에서 저장된 텍스트가 표시되는 형태입니다.)

생성된 클래스 파일에 Using을 통해 필드타입에서 사용할 참조를 설정해 줍니다.
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;


그 다음 아래와 같이 FieldType을 정의해 주고, FieldType을 랜더링할 컨트롤을 선언해줍니다.
여기서는 별다른 설정은 하지 않겠습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace CustomFieldTypes
{
    public class CustomFieldType : SPFieldText
    {
        public const string FieldName = "CustomFieldType";

        public CustomFieldType(SPFieldCollection fields, string fieldName) : base(fields, fieldName) { }
        public CustomFieldType(SPFieldCollection fields, string typeName, string displayName) : base(fields, typeName, displayName) { }

  public override BaseFieldControl FieldRenderingControl
  {
   get
   {
                BaseFieldControl fieldControl = new CustomFieldTypeControl();
    fieldControl.FieldName = InternalName;
    return fieldControl;
   }
  }       
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    public class CustomFieldTypeControl : TextField
    {
    }
}



이제 배포 후 리스트 등에서 배포된 필드타입을 사용할 수 있도록 하기 위해, 필드타입이 정의된 XML 파일을 만들어 주겠습니다.
XML 파일은 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML 경로에 저장되어야 합니다.
배포를 위해서 아래와 같이 프로젝트에 매핑폴더를 추가해줍니다.




이제 생성된 매핑 폴더 안에 Add > New Item을 통해 XML 파일을 추가해 주고,
'fldtypes_OOO'의 형태로 이름을 지어 줍니다.(예 : fldtypes_Custom.xml)


생성된 XML 파일을 열어 아래와 같이 필드타입을 선언해 줍니다.

<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>  
  <!--테스트 커스텀 필드 타입 정의-->
  <FieldType>
    <Field Name="TypeName">CustomFieldType</Field>
    <Field Name="ParentType">Text</Field>
    <Field Name="TypeDisplayName">CustomFieldType</Field>
    <Field Name="TypeShortDescription">CustomFieldType</Field>
    <Field Name="UserCreatable">TRUE</Field>
    <Field Name="Sortable">TRUE</Field>
    <Field Name="AllowBaseTypeRendering">TRUE</Field>
    <Field Name="Filterable">TRUE</Field>
    <Field Name="FieldTypeClass">CustomFieldTypes.CustomFieldType, $SharePoint.Project.AssemblyFullName$</Field>
    <PropertySchema>
      <Fields>
      </Fields>
    </PropertySchema>
  </FieldType> 
</FieldTypes>



이제 Deploy 메뉴를 클릭하여 배포합니다. (개발환경이 Local인 경우가 아니라면 빌드된 WSP 파일을 이용해 배포하시면 됩니다.)

아래는 배포가 완료된 후, 해당 SharePoint 리스트에서 'Create Column' 메뉴를 통해 이동한 열 추가 화면입니다.
형광펜으로 표시한 것처럼 Custom 필드타입이 추가된 것을 확인할 수 있습니다.



열 추가 후 입력창에서의 커스텀 필드의 모습입니다.



데이터 입력 후 상세보기 창에서의 모습입니다.


여기까지 간단하게 SharePoint 2010에 Custom FieldType을 추가하는 방법에 관해 알아보았습니다.

감사합니다.

신고
Posted by kdmsong

BLOG main image
http://SharePointSchool.net by kdmsong

분류 전체보기 (262)
SharePoint 2013 (1)
SharePoint 2010 (224)
MOSS 2007 (3)
SharePoint 세미나 (9)
Windows Azure (7)
IIS 6.0 ~ 8.0 (8)
개발자 기본 소양 (10)
Etc. (0)
Total : 380,649
Today : 3 Yesterday : 306
Statistics Graph

free counters