2016년 3월 9일 수요일

Name Value List 타입을 이용하여 데이타소스 만들기

#HowTo #Datasource #GetItem

사이트코어에서 탬플릿을 만들다보면 다양한 템프릿 필드를 선택할수가 있다. 그 중에서 Key와 Value 개념인 "Name Value List" 타입에 대하여 알아보도록 하겠다.

간혹, 데이타소스를 만들는데 있어서, 똑같은 데이타 타입임에도 불구하여, 데이타의 수 만큼 데이타 이이템을 만들어야 하는경우가 있다.

사이트 이름사이트 URL
구글http://www.google.com
야후http://www.yahoo.com
레딧http://www.reddit.com
사이트코어http://www.sitecore.com
......


이럴경우 사이트 각각의 아이템을 만들 필요없이, 템플릿의 "Name Value List"을 선택함으로로써 하나의 데이타소스 아이템에 여러게의 값을 저장할수가 있다. 프로그래밍에서 Array 또는 List와 똑같은 개념이라고 할수있다.



 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
var db = Sitecore.Configuration.Factory.GetDatabase("master");
// NameValueType의 필드를 가지고 있는 데이타소스 아이템의 ID 값을 입력하다.
var item = db.GetItem("{8A8E427B-9162-4680-AE69-239217F5B9AB}");
 
//데이타를 초기화하고,
var data = new NameValueCollection();
// 필요한만큼 데이타를 추가한다.
data.Add("name1", "value1");
data.Add("name2", "value2");
data.Add("name3", "value3");
data.Add("name4", "value4");
     
using (new Sitecore.SecurityModel.SecurityDisabler())
{
    item.Editing.BeginEdit();
    try
    {
        //데이타값은 필드 이름을 입력한다.
        //'&'는 값들의 Divider이다.
        item["NameList"] = StringUtil.NameValuesToString(data, "&");
    }
    finally
    {
        item.Editing.EndEdit();
    }
}