Элементы списка SharePoint с полями поиска - перемещение / копирование в другое семейство сайтов - PullRequest
3 голосов
/ 27 октября 2009

Вот сценарий. Наши пользовательские задания SharePoint архивируют элементы списка (на основе ceratin crteria) и копируют / перемещают элементы в другое семейство сайтов. В этом случае, если элемент списка имеет несколько полей поиска, как их сохранить, когда я копирую / mpve в другое семейство сайтов?.

Спасибо, Дурга

Ответы [ 2 ]

0 голосов
/ 28 октября 2009

вы не можете "скопировать" поле из sitecoll A в sitecoll B, вы должны воссоздать его. Обычный способ сделать это - на самом деле использовать функцию, которая создает поле поиска, но я полагаю, что это не тот случай (это должно было быть сделано в начале, в будущем я предлагаю, как вы создаете поля, видя, как это происходит). метод многоразовый).

Что вам нужно сделать, так это в объекте SPSite b sitecoll создать новое поле, используя исходное поле field.SchemaXml, таким образом, вы получите всю необходимую информацию для воссоздания поля с нуля в sitecoll b. вам нужно использовать AddFieldAsXml коллекции SPSite.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");
     }
   }
 }
0 голосов
/ 27 октября 2009

Внутреннее имя поля поиска должно оставаться прежним, и пока список, на который ссылается поле поиска, использует одни и те же значения (идентификаторы могут отличаться, просто сопоставьте значение и создайте новое SPFIeldLookupValue), проблем нет , копируйте метаданные, основанные на внутренних именах полей, и все должно работать нормально, мы делаем то же самое для архивирования новостей и документов с использованием тайм-джобов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...