Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cannot update lookup field when uploading document using CopyIntoItems

I am trying to upload a document from my local machine using the Copy.asmx webservice, the CopyIntoItems method. I can successfully upload the document and a DateTime property but I cannot update a lookup property of the document library. I am using MOSS 2007 with sp2

The code I am using is shown below:

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);

The document is successfully uploaded but the lookup field is not updated

Can anyone please help?

like image 942
Param Avatar asked Dec 16 '09 15:12

Param


2 Answers

I just found this thread:

"Unfortunately, the CopyIntoItems will not put information into fields of "File", "Computed" or "Lookup" types. The web service uses the SPCopy class's CopyIntoItem which makes a call to a private method called FieldShouldBeCopiedTo. This method contains the logic prventing Lookup fields from being copied."

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

I hate SharePoint sometimes.

like image 94
Dave Avatar answered Nov 11 '22 18:11

Dave


No way to do it guys; the only alternative is to reconnect, get the list item itself and update the metadata that way. Remember: Lookup fields need to use the format of number;# - so if you if were if the data was:

12;#Some Option

Use 12;# in the Xml Batch Update.

like image 1
David Sterling Avatar answered Nov 11 '22 18:11

David Sterling