3

这是场景。我们的 SharePoint 自定义作业存档列表项(基于某些条件)并将这些项复制/移动到不同的网站集。在这种情况下,如果列表项有一些查找字段,当我复制/mpve 到不同的网站集时如何保留这些字段?

谢谢,杜尔加

4

2 回答 2

0

查找字段的内部名称应该保持不变,只要查找字段引用的列表使用相同的值(ID 可以不同,只需匹配该值并创建一个新的 SPFIeldLookupValue),就没有问题。根据字段内部名称复制元数据,一切都应该正常,我们使用 timerjobs 归档新闻项目和文档也是如此。

于 2009-10-27T20:21:58.137 回答
0

您不能将 sitecoll A 中的字段“复制”到 sitecoll B,您必须重新创建它。解决这个问题的通常方法是实际使用创建查找字段的功能,但我猜这里不是这种情况(应该在一开始就完成,将来我建议这就是你创建字段的方式,看看如何方法可重复使用)。

您需要做的是在 b sitecoll 的 SPSite 对象中使用原始字段创建一个新字段,field.SchemaXml这样您就可以在 sitecoll b 中从头开始重新创建该字段的所有相关信息。如果要设置新字段的内部名称,则需要使用AddFieldAsXmlSPSite.Fields 集合,因为 InternalName 属性是只读的。

在这里阅读如何

检查字段是否存在:

 using(SPSite targetSite = new SPSite("urloftargetsite"))
 {
   using(SPWeb targetWeb = sourceSite.OpenWeb())
   {
     if(!targetWeb.Fields.ContainsField(originalField.InternalName))
     {
        targetWeb.Fields.AddFieldAsXml("caml string here");
     }
   }
 }
于 2009-10-28T16:48:39.997 回答