Come aggiornare una voce di elenco dal servizio Web utilizzando una clausola in cui?
-
16-10-2019 - |
Domanda
Ho uno scenario in cui ho bisogno di aggiornare un elemento della lista, ma non so l'ID interno della voce di elenco - da qui il seguente non funziona per me:
batchElement.InnerXml = "<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + id + "</Field>" +
"<Field Name='DeliveryStatus'>" + newStatus.ToString() + "</Field></Method>";
Invece ho un altro campo nella lista chiamata ProcessID:
Quindi vorrei aggiornare lo stato di consegna in cui ProcessID = X
Questo è possibile utilizzando i servizi Web di SharePoint.
Una soluzione che stavo pensando di è quello di fare prima un selezionare per l'ID in base alla ProcessID - quindi aggiornare sulla base di questo ID, ma questa sembra una soluzione pazza, sicuramente gli inventori di MOSS CAML avrebbero fornito un modo per aggiornare un elemento della lista da parte di alcuni mezzi di una clausola in cui, o utilizzando un altro campo per la filtrazione, piuttosto che semplicemente vecchio ID?
Grazie
Soluzione
Ho il sospetto che tu sia pazzo soluzione è quella giusta -. Selezionate per le voci per ottenere gli ID, poi update
Non è molto diverso per il caricamento di un documento - che può comportare un HTTP PUT, impostando i metadati, e poi selezionando la voce in - che è 3 richieste HTTP per quello che però dovrebbe essere 1 ...
Altri suggerimenti
Penso che si sta perdendo un paio di nodi. Si dovrebbe essere necessario il seguente:
<updates><Batch OnError='Continue'>{CAML}</Batch></updates>