невозможно обновить поле поиска при загрузке документа с использованием CopyIntoItems - PullRequest
5 голосов
/ 16 декабря 2009

Я пытаюсь загрузить документ с моего локального компьютера, используя веб-сервис Copy.asmx, метод CopyIntoItems. Я могу успешно загрузить документ и свойство DateTime, но не могу обновить свойство поиска в библиотеке документов. Я использую MOSS 2007 с sp2

Код, который я использую, показан ниже:

string[] destinationUrls = { Uri.EscapeUriString(destinationUrl) };

CopySharepointService.FieldInformation dateInformation = new CopySharepointService.FieldInformation();
dateInformation.DisplayName = "Date";
dateInformation.Type = CopySharepointService.FieldType.DateTime;
dateInformation.Value = DateTime.Today.ToString();

CopySharepointService.FieldInformation fundInformation = new CopySharepointService.FieldInformation();
fundInformation.DisplayName = "Fund";
fundInformation.Type = CopySharepointService.FieldType.Lookup;
fundInformation.Id = new Guid(fundGuidItem); // This is the GUID of the field being updated in the document library
fundInformation.Value = "1";

CopySharepointService.FieldInformation[] info = { dateInformation, fundInformation };            
CopySharepointService.CopyResult[] result;    
CopySharepointService.CopySoapClient CopyService2007 = new CopySoapClient("CopySoap");

CopyService2007.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
CopyService2007.CopyIntoItems(destinationUrl, destinationUrls, info, fileData, out result);

Документ успешно загружен, но поле поиска не обновлено

Может кто-нибудь помочь, пожалуйста?

Ответы [ 3 ]

4 голосов
/ 11 января 2010

Я только что нашел эту тему:

"К сожалению, CopyIntoItems не будет помещать информацию в поля типов" File "," Computed "или" Lookup ". Веб-служба использует CopyIntoItem класса SPCopy, который выполняет вызов частного метода FieldShouldBeCopiedTo. логика предотвращает копирование полей поиска. "

http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2fdc9933-ddb8-446f-80ad-6c8e17dfdb6f

Я ненавижу SharePoint иногда.

1 голос
/ 23 ноября 2010

Нет, ребята; единственная альтернатива - восстановить соединение, получить сам элемент списка и таким образом обновить метаданные. Помните: поля поиска должны использовать формат number;# - так что если вы, если были, если данные были:

12;#Some Option

Используйте 12;# в пакетном обновлении Xml.

0 голосов
/ 16 февраля 2011

К сожалению, вам нужно выполнить вызов UpdateListItems , чтобы установить все «забавные» метаданные.

Из примера в ссылке:

Web_Reference_Folder.Lists listService = new Web_Reference_Folder.Lists();
listService.Credentials= System.Net.CredentialCache.DefaultCredentials;

string strBatch = "<Method ID='1' Cmd='Update'>" + 
    "<Field Name='ID'>4</Field>" +
    "<Field Name='Field_Number'>999</Field></Method>" +
    "<Method ID='2' Cmd='Update'><Field Name='ID' >6</Field>" +
    "<Field Name='Field_DateTime'>
        2003-11-11T09:15:30Z</Field></Method>"; 

XmlDocument xmlDoc = new System.Xml.XmlDocument();

System.Xml.XmlElement elBatch = xmlDoc.CreateElement("Batch");

elBatch.SetAttribute("OnError","Continue");
elBatch.SetAttribute("ListVersion","1");
elBatch.SetAttribute("ViewName",
    "0d7fcacd-1d7c-45bc-bcfc-6d7f7d2eeb40");

elBatch.InnerXml = strBatch;

XmlNode ndReturn = listService.UpdateListItems("List_Name", elBatch);

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