SharePointで複数の値を持つルックアップフィールドを読むにはどうすればよいですか?
-
28-10-2019 - |
質問
こんにちは、見てくれてありがとう!
バックグラウンド
SharePoint 2007に基づいて古い.NETプロジェクトを継承し、SPデータに単にアクセスするだけで、SPをバックエンドにするために設計および外部コアライブラリを設計しました。はい、SQLに移行する方が良いと思いますが、クライアントは同意しません。
以前の開発者は、SPリストのデータを読み取るために簡単な読み取り方法を使用しました。
SPList list = CurrentRootWeb.Lists["SomeListName"];
次に、ある種の辞書を介してリストのプロパティにアクセスします(つまり、リスト内のアイテムごとに、項目["somevalue"]を取得します)。
私はSharePointに熟練していないので、これがデータにアクセスするのに最も効率的な方法であるかどうかはわかりません。
問題
SharePointで複数の値を持つルックアップフィールドを読むにはどうすればよいですか?
彼らが要求するすべてのプロパティは、見返りに文字列を望んでいるようです。そう item[SomeString]
大丈夫ですが、 item[SomeList]
すべてをバーフにします!マルチバリュールックアップリスト列は、選択された値を保持しているシリアル化または区切り文字列として入っていると思っていたでしょう(例: "red; blue; green")。何が足りないの?
ありがとう!
解決
それぞれのために SPField
sリストのフィールドには、フィールドをテストする必要があります Type
.
タイプがある場合 SPFieldType.MultiChoice
, 、次にキャストします SPField
に SPFieldChoice
にアクセスします Choices
コレクション、 StringCollection
.
他のヒント
複数の値だけでなく複数の値を持つルックアップフィールドに特に興味がある場合は、次のコードが役立つはずです。
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>();
}