2010-07-06 3 views
5

Sto tentando di eliminare un documento, utilizzando il servizio web sharepoint, se qualcuno carica un documento e poi preme Annulla. Ho creato la seguente funzioneEliminazione di un documento tramite servizio Web sharepoint utilizzando JQuery

function DeleteDocument(libraryName, ID) 
{ 
debug.log('DeleteDocument (Entry) libraryname = '+libraryName+' ID='+ID); 
    var batch = 
     "<Batch OnError='Continue'> \ 
      <Method ID='1' Cmd='Delete'> \ 
       <Field Name='ID'>" + ID + "</Field> \ 
      </Method> \ 
     </Batch>"; 

    var soapEnv = 
     "<?xml version='1.0' encoding='utf-8'?> \ 
     <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' \ 
xmlns:xsd='http://www.w3.org/2001/XMLSchema' \ 
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> \ 
      <soap:Body> \ 
      <UpdateListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \ 
       <listName>"+libraryName+"</listName> \ 
       <updates> \ 
       " + batch + "</updates> \ 
      </UpdateListItems> \ 
      </soap:Body> \ 
     </soap:Envelope>"; 
    debug.log(soapEnv); 
    $.ajax({ 
     url: "http://<serverandsite>/_vti_bin/lists.asmx", 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader("SOAPAction", 
      "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"); 
     }, 
     type: "POST", 
     dataType: "xml", 
     data: soapEnv, 
     complete: function(xData, status){   
      alert(xData.responseText); 
      debug.log('xData response = ' + xData.responseText); 
      debug.log('status response = ' + status); 
     }, 
     contentType: "text/xml; charset=utf-8" 
    }); 
} 

quando l'eseguo io ottenere

0x81020030 - il nome del file non valido

Il nome del file specificato non poteva essere utilizzato. Potrebbe trattarsi del nome di un file o di una directory esistente oppure non è autorizzato ad accedere al file .

Qualcuno ha qualche idea del perché questo potrebbe fallire. Sto facendo funzionare il codice contro una biblioteca di documenti standard.

L'ho provato contro il check-in e il check-out dei file e ottenere lo stesso messaggio. Ho bisogno di questo per correre contro i documenti che sono stati estratti, in realtà non potranno mai sono stati controllati in, quindi non ho idea di come ho potuto lavorare fuori la fileref

+0

Solo per aggiungere ho appena provato a forzare un elemento e questo produce lo stesso errore – Buzzby

risposta

4

Per i documenti è inoltre necessario includere la fileref

<Field Name="FileRef">http://Server/[sites/][Site/]Library/File</Field> 
+0

Ok, quello che potrei fare scrivo un piccolo servizio web che prende nell'ID e nel nome dell'elenco e poi utilizzare il modello a oggetti per prendere in consegna il checkout e quindi eliminare il file. – Buzzby

+0

Ho finito per cancellare il documento tramite un gestore di eventi, ma questo dovrebbe funzionare – Buzzby