【问题标题】:Lookup Field as a Site Column via CAML通过 CAML 将查找字段作为站点列
【发布时间】:2009-07-16 17:17:26
【问题描述】:

我正在尝试通过 CAML 创建一个查找字段作为站点列。我想用作查找源的列表是在功能接收器中创建的,所以我不知道它的 ID。我已经阅读了几篇博客文章,这些文章表明我可以将列表的路径放在 List 属性中。从这些帖子上的 cmets 看来,此解决方案适用于某些人,但不适用于其他人。我属于后者。

当我尝试关联使用查找网站列 I 的内容类型时:“HRESULT 异常:0x80040E07”

<Field 
  ID="{da94e56b-428f-4b95-b4c6-24aed0256475}" 
  Name="Test_x0020_Lookup_x0020_Column"
  StaticName="Test_x0020_Lookup_x0020_Column" 
  DisplayName="Test Lookup Column" 
  Type="Lookup" 
  Required="FALSE" 
  List="Lists/Test" 
  ShowField="Title" 
  PrependId="TRUE"
  Group="Test Site Columns" />

  <ContentType
    ID="0x0100B6D92594DDCE8E479D0EB0C414C463B0"
    Name="Test Lookup Content Type"
    Version="0"
    Group="Test Content Types">
    <FieldRefs>
      <FieldRef 
         ID="{da94e56b-428f-4b95-b4c6-24aed0256475}" 
         Name="Test_x0020_Lookup_x0020_Column" 
         Required="TRUE" />
    </FieldRefs>
  </ContentType>

【问题讨论】:

    标签: sharepoint


    【解决方案1】:

    请务必在创建站点列时添加此属性 Overwrite="TRUE"

    【讨论】:

    • 请说明具体在哪里以及为什么。
    【解决方案2】:

    将路径放入 List 属性中的列表确实有效我已经在我的项目中完成了它并且成功了。我想让你检查的一件事是功能的顺序。您是否手动执行功能?或在 onet.xml 中使用它们。因为当您的内容类型功能执行时,应该已经有该列表可供参考。

    此外,您还应该在 Logs 文件夹中的 SharePoint 日志中获得更详细的信息。尝试在那里找到有关错误的更多信息,这在许多情况下会有所帮助。

    【讨论】:

      【解决方案3】:

      schema.xml 中定义的列表也有同样的问题。我通过确保在字段 def 和 schema.xml 文件中提供相同的路径来修复它。

      【讨论】:

        【解决方案4】:

        列表名称对我也不起作用。

        我必须使用功能激活器动态创建列表和查找列。一旦我通过 SharePoint 对象模型创建了查找列表,您就有了 Guid。然后,您可以使用上面现有的 CAML 使用以下方法在需要查找列的列表上动态创建列:

        string xml = // your CAML up top with a TOKEN to replace List="{TOKEN}" SPList listWithLookupColumn = web .Lists .Add(url,description,SPListTemplateType.GenericList); Guid listId = listWithLookupColumn.ID; xml = xml.Replace("TOKEN",listId); // some code to find the list you want lookup column on SPList listToAddLookupColumn = listRepository(listNameToFind); listToAddLookupColumn .AddFieldAsXml(xml,true,SPAddFieldOptions.AddToDefaultContentType)

        【讨论】:

          【解决方案5】:

          List="" 应该是唯一的 GUID。由于您还不知道 GUID,因此您需要在创建列表时以编程方式替换它。

          以下是有关如何执行此操作的一些信息:http://www.sharepointtactics.com/blog/fix-lookup-fields-created-through-features.html

          【讨论】:

            猜你喜欢
            • 2011-06-22
            • 1970-01-01
            • 1970-01-01
            • 2011-02-23
            • 2020-03-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多