2009-12-16 3 views
5

Ich versuche, ein Dokument von meinem lokalen Computer mit dem Copy.asmx-Webservice, der CopyIntoItems-Methode, hochzuladen. Ich kann das Dokument und eine DateTime-Eigenschaft erfolgreich hochladen, aber ich kann eine Sucheigenschaft der Dokumentbibliothek nicht aktualisieren. Ich bin mit MOSS 2007 mit sp2kann das Nachschlagefeld beim Hochladen eines Dokuments mit CopyIntoItems nicht aktualisieren

Der Code ich benutze ist unten dargestellt:

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

Das Dokument hochgeladen erfolgreich, aber das Nachschlag-Feld nicht aktualisiert

Kann jemand bitte helfen?

Antwort

4

Ich habe gerade dieses Thema anschauen:.

Datei ‚‚Computed‘oder‚Lookup‘Typen„Leider werden die CopyIntoItems keine Informationen in Bereichen setzen‘Der Web-Dienst nutzt die CopyIntoItem der SPCopy Klasse, die eine macht Aufruf einer privaten Methode mit dem Namen FieldShouldBeCopiedTo. Diese Methode enthält die Logik, nach der Lookup-Felder nicht kopiert werden. "

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

Ich hasse manchmal Sharepoint.

1

Keine Möglichkeit, es zu tun Jungs; Die einzige Alternative besteht darin, die Verbindung wiederherzustellen, das Listenelement selbst zu holen und die Metadaten auf diese Weise zu aktualisieren. Denken Sie daran: Lookup Felder müssen das Format number;# verwenden - wenn Sie also, wenn waren, wenn die Daten sind:

12;#Some Option 

Verwenden 12;# im XML-Batch-Update.

0

Leider müssen Sie mit einem UpdateListItems Aufruf folgen, um alle "Spaß" -Metadaten festzulegen.

Aus dem Beispiel in dem Link:

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

Haben Sie einen Link zu einem Beispiel, vielleicht? – mydoghasworms