带有查找字段的SharePoint列表项 - 移动/复制到不同的网站集

时间:2009-10-27 18:21:22

标签: sharepoint field lookup

以下是该方案。我们的SharePoint自定义作业归档列表项(基于ceratin crteria)并将项目复制/移动到不同的网站集。在这种情况下,如果列表项有一些查找字段,当我复制/ mpve到不同的网站集时,如何保留这些字段?

谢谢, 杜尔加

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

了解here

的方式

如果字段存在,请查看:

 using(SPSite targetSite = new SPSite("urloftargetsite"))
 {
   using(SPWeb targetWeb = sourceSite.OpenWeb())
   {
     if(!targetWeb.Fields.ContainsField(originalField.InternalName))
     {
        targetWeb.Fields.AddFieldAsXml("caml string here");
     }
   }
 }