5

コンテンツ タイプにルックアップ フィールドを追加しようとしています。フィールドには次の定義があります。

<Field ID="{c80e8e3c-7124-4772-a39d-5b69f131d542}"
         Name="Site"
         Group="Tieto Intranet Columns"
         Type="Lookup"
         DisplayName="Site"
         StaticName="Site"
         List="Lists/FavoriteSites"
         ShowField="Title"
         PrependId="TRUE"
         WebId="~sitecollection"
   >

このルックアップ フィールドで参照したい FavoriteSites リストは、サイト コレクション スコープに存在します。展開はうまくいきますが、このルックアップでコンテンツ タイプに基づいてリストを作成すると、そのルックアップ フィールドが FavoriteSites リストに接続されていないように見えます。FavoriteSites にいくつかのデータを追加し、FavoriteSites のルックアップ フィールドを使用して 2 番目のリストに何かを追加しようとします。残念ながら、FavoriteSites リストのデータが空であることを示すはずのドロップダウン選択を選択します。

FavoriteSites への新しいルックアップ列を手動で作成すると、すべて問題ありません。

このルックアップ定義のどこに問題があるのか​​ 、誰か考えがありますか?

アップデート:

Rich が私に勧めたように、Verbose にログ レベルを設定して、次のメッセージを見つけました。

機能 {d86c7005-d31d-43ae-b86b-38f28b81072e} のフィールド {c80e8e3c-7124-4772-a39d-5b69f131d542} に指定された WebId=~sitecollection および List=Lists/FavoriteSites 属性が見つかりませんでした。List={39CEC23E-FB28-47B3-BC36-C21780AD1D94} を設定します。

リスト FavoriteSites が存在するため、わかりません。FavoriteSites リストとサイト フィールドを含む 2 番目のリストは、サイト コレクション スコープの 1 つの機能によって展開されます。

デプロイ時のGUIDがわからないので、GUIDによるルックアップでリストを指定できません。

4

3 に答える 3

4

このログ メッセージは、Lists/FavoriteSites が、サイト コレクションのルート サイトまたは機能がアクティブ化されているサイト (後者がサブサイトの場合) のいずれにも存在しないことを意味します。

Lists/FavoriteSites が機能によって作成されている場合は、Fields 機能の前にアクティブ化されていることを確認してください。必要に応じて、ListInstance 要素を Field 要素のすぐ上に配置します。しかし、メッセージは明らかです。ユーザー設定フィールドがサイト コレクションに準備されている時点では、リストは存在しません。そして、それが機能していない理由です。

明確にするために、リストは、そのフィールドを使用するリスト インスタンスを作成するときだけでなく、機能がアクティブ化されたときに存在する必要があります。

PS Microsoft.SharePoint.SPFieldElement.PerformFixUpIfLookUpField メソッドの「ドキュメント」をチェックして、これを見つけました。

于 2011-09-14T19:58:43.427 に答える
1

リスト フィールドをリストの ID に変更してみてください。List="{4641f5f2-b358-4805-9d7d-e910d2243fb5}"

また、 SharePointManagerを使用して、手動で作成したフィールドのフィールド定義を確認し、リストのブルーミング GUID などを簡単に見つけることをお勧めします。

于 2011-09-14T01:30:09.103 に答える
1

私も同じ問題を抱えていました。結局、私の問題は、rootweb にあるリストを宣言的に参照できないことでした。WebId プロパティの ~sitecollection トークンは、中かっこの間に Guid を書き込むため機能しませんが、SharePoint は中かっこなしでそれを想定しています (説明はhttp://martensboarterstun.wordpress.com/2013/06/15/how-にあります)。 to-create-a-list-definition-with-a-lookup-field-declaratively/ )。リスト定義に Rootweb ID を配置することになりました。

于 2013-06-15T15:54:16.577 に答える