【问题标题】:Sharepoint lookup field and WebId="Sharepoint 查找字段和 WebId="
【发布时间】:2011-09-13 20:17:07
【问题描述】:

我尝试在内容类型中添加查找字段。字段有这样的定义:

<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 列表和带有 Site 字段的第二个列表由网站集范围内的一项功能部署。

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

【问题讨论】:

  • 在激活该功能时搜索 SP 日志(需要详细级别日志)以获取以下消息:“指定的 WebId=~sitecollection 和 List=Lists/FavoriteSites 属性”,然后更新您的问题与消息的后半部分。
  • 感谢您的评论 Rich,我找到了这条消息并更新了我的帖子。您现在知道问题出在哪里了吗?

标签: sharepoint content-type lookup-field


【解决方案1】:

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

如果列表/FavoriteSites 是由某个功能创建的,请确保在您的“字段”功能之前激活它。如果必须,将 ListInstance 元素放在 Field 元素的正上方。但信息很明确:在将您的自定义字段配置到网站集时,该列表不存在。这就是它不起作用的原因。

需要明确的是,列表必须在激活功能时存在,而不仅仅是在您创建将使用该字段的列表实例时。

附:我通过检查 "documentation" 的 Microsoft.SharePoint.SPFieldElement.PerformFixUpIfLookUpField 方法发现了这一点。

【讨论】:

  • 谢谢Rich,这是功能激活顺序引起的。当我将带有列表的功能激活放在带有字段的功能之前,一切正常。
【解决方案2】:

尝试将列表字段更改为列表的 ID,例如List="{4641f5f2-b358-4805-9d7d-e910d2243fb5}"

我还建议使用 SharePointManager 查看您手动创建的字段的字段定义,并轻松找到列表等的繁盛 guid。

【讨论】:

  • 感谢 Nat 的回复,SharePointManager 真的是非常有用的应用程序,我以前不知道。我无法按 ID 指定此列表,因为我不知道部署时的 ID。我可以通过功能事件接收者添加此列,但这不是我想要使用的方式。我认为 xml 定义和列表 URL 的方式在 Sharepoint 2010 中应该没问题。
【解决方案3】:

我遇到了同样的问题。最后,我的问题是您不能以声明方式引用 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 放在我的列表定义中。

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多