以下是该方案。我们的SharePoint自定义作业归档列表项(基于ceratin crteria)并将项目复制/移动到不同的网站集。在这种情况下,如果列表项有一些查找字段,当我复制/ mpve到不同的网站集时,如何保留这些字段?
谢谢, 杜尔加
答案 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");
}
}
}