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 创建新的查找列时,一切正常。

有人知道这个查找定义中哪里可能出现问题吗?

更新:

正如 Rich 向我推荐的那样,我在 Verbose 上设置了日志级别并找到了这条消息:

找不到为特征 {d86c7005-d31d-43ae-b86b-38f28b81072e} 中的字段 {c80e8e3c-7124-4772-a39d-5b69f131d542} 指定的 WebId=~sitecollection 和 List=Lists/FavoriteSites 属性。设置列表={39CEC23E-FB28-47B3-BC36-C21780AD1D94}。

我不明白,因为列表 FavoriteSites 存在。收藏站点列表以及带有站点字段的第二个列表由站点集合范围上的一项功能部署。

我无法通过 GUID 在查找中指定列表,因为我不知道部署时间的 guid。

4

3 回答 3

4

该日志消息的含义是站点集根站点或激活该功能的站点(如果后者是子站点)中不存在 Lists/FavoriteSites。

如果列表/FavoriteSites 是由某个功能创建的,请确保在您的字段功能之前激活它。如果必须,将 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 回答