2011-12-06 6 views
3

안녕하세요. 감사합니다.SharePoint에서 여러 값을 가진 LookUp 필드를 읽으려면 어떻게해야합니까?

배경

나는 셰어 포인트 2007을 기반으로 기존 .NET 프로젝트를 상속하기 때문에 단지 백엔드 SP를 제작, 설계 및 단지 SP 데이터에 액세스 외부 핵심 라이브러리있다. 네, SQL로 마이그레이션하는 편이 낫겠지 만 클라이언트는 동의하지 않습니다. [아이템을 얻을

SPList list = CurrentRootWeb.Lists["SomeListName"]; 

그리고 그들은 즉 목록의 각 항목에 대한 종류 (의 사전을 통해 목록의 속성에 액세스 :

이전 개발자들은 SP 목록에서 데이터를 읽을 수있는 간단한 읽기 방법을 사용 "SomeValue"]).

저는 SharePoint에 익숙하지 않아 데이터에 액세스하는 데 가장 효율적인 방법인지는 잘 모릅니다.

문제

SharePoint에서 여러 값으로 LookUp 필드를 읽으려면 어떻게해야합니까?

요청하는 모든 속성은 문자열을 반환하려는 것으로 보입니다. 따라서 item[SomeString]은 괜찮습니다. 그러나 item[SomeList]은 모든 것을 barf로 만듭니다! 다중 값 조회 목록 열은 선택한 값 (예 : "빨강, 파랑, 녹색")을 포함하는 직렬화 된 또는 구분 된 문자열로 간주됩니다. 내가 뭘 놓치고 있니?

감사합니다.

답변

3

목록의 필드에있는 SPField 각각에 대해 해당 필드의 Type을 테스트해야합니다.

유형이 SPFieldType.MultiChoice 경우

는, 당신은 SPFieldChoiceSPField 캐스팅하고 StringCollectionChoices 수집을 액세스 할 수 있습니다.

+1

감사 competent_tech! 나는 SharePoint와 관련하여 매우 무능력합니다. 코드에서 유형을 테스트하는 방법을 알려주시겠습니까? 당신이 아무것도 참조하지 않고 알면. 감사! –

+0

이것은 필드에 액세스하는 방법에 따라 다릅니다. 나는 당신의 코드가 foreach (SPField oField in list.Fields)와 같은 것을하고 있다고 가정한다. 그렇다면 다음과 같이 말할 수 있습니다 : if (oField.Type == SPFieldType.MultiChoice) –

+0

감사합니다 competent_tech! –

9

당신이 아니라 MultiChoice의 feilds 여러 값 조회 필드에 특별히 관심이 있다면, 다음 코드는 데 도움이 될 것입니다

item.Fields["LookFieldName"].Type == SPFieldType.Lookup; 
SPFieldLookup LookUpField = item.Fields["LookFieldName"] as SPFieldLookup; 
if (LookUpField.AllowMultipleValues) 
{ 
    SPFieldLookupValueCollection valueCollection = item[Field.Id] as SPFieldLookupValueCollection; 

    string[] arrLookupValues = (from SPFieldLookupValue val in valueCollection select val.LookupValue).ToArray<string>(); 


} 
+1

초보자 셰어 포인트 개발자로서,이 답변은 매우 도움이되었고 찾기가 어려웠습니다. SPLinq의 훌륭한 예제를 제공해 주셔서 감사합니다. – samspot

관련 문제