2011-12-06 35 views
3

こんにちは、ありがとう!SharePointで複数の値を持つLookUpフィールドを読み込むにはどうすればよいですか?

背景

私は、SharePoint 2007に基づいて古い.NETプロジェクトを継承しているので、ちょうどバックエンドSPを作り、設計されており、単にSPデータにアクセスする外部のコアライブラリきました。はい、私はSQLに移行する方が良いでしょうが、クライアントは同意しません。 [アイテムを取得し、

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

そして、彼らはつまり、リスト内の各アイテムの種類(の辞書によるリストのプロパティにアクセス:

以前の開発者は、SPリスト内のデータを読み取るために、単純なreadメソッドを使用しました"SomeValue"])。

私はSharePointに熟練していないので、これがデータにアクセスする最も効率的な方法であるかどうかはわかりません。

問題

SharePointで複数の値を持つLookUpフィールドを読み取る方法を教えてください。

彼らが要求するすべてのプロパティは、返される文字列を必要とするようです。だからitem[SomeString]は大丈夫ですが、​​は全てをbarfにします!私は、複数の値のルックアップリストの列は、選択された値(例: "赤;青;緑")を保持する直列化された、または区切られた文字列として来ると考えていたでしょう。私は何が欠けていますか?

ありがとうございます!

答えて

3

リストのフィールドにあるSPFieldのそれぞれについて、フィールドのTypeをテストする必要があります。

タイプはSPFieldType.MultiChoiceある場合は、SPFieldChoiceSPFieldをキャストしStringCollectionあるChoicesコレクションにアクセス。

+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

関連する問題