Elemento batch in Sharepoint per eliminare un elemento dell'elenco quando non si conosce l'ID

StackOverflow https://stackoverflow.com/questions/1212534

Domanda

Voglio eliminare un elemento in un elenco quando corrisponde ad alcuni criteri usando il servizio web UpdateListItems. Non conosco l'ID della voce di elenco che voglio eliminare ma conosco i criteri.

Ad esempio in SQL potrei fare:

DELETE FROM listName WHERE LastName='Bauer' AND FirstName='Jack'

Come scriveresti un elemento batch per farlo?

Aggiorna

Sarebbe qualcosa del genere?

<Batch PreCalc='TRUE' OnError='Continue'>
  <Method ID='1' Cmd='Delete'>
    <Field Name='LastName'>Bauer</Field>
    <Field Name='FirstName'>Jack</Field>
  </Method>
</Batch>

L'ID del metodo o l'ID della cosa che si desidera eliminare?

Aggiorna

Ho provato il seguente codice e l'errore che viene restituito è

Invalid URL Parameter

The URL provided contains an invalid Command or Value. Please check the URL again.

La mia ipotesi è che non è possibile fare a meno dell'ID ...

È stato utile?

Soluzione 2

Questo non sembra possibile.

Il mio modo per aggirare questo era di interrogare l'elenco e ottenere l'id. Ciclo per la risposta estrarre l'id, quindi creare un metodo per ogni ID per eliminarlo.

Altri suggerimenti

Come aggiunta alla risposta di ChrisB (la formattazione di una query CAML in un commento non sembrava funzionare), la query sarebbe stata simile a questa:

SPQuery query = new SPQuery();
query.Query = "<Where><And>"+
  "<Eq><FieldRef Name='LastName'/><Value Type='Text'>Bauer</Value></Eq>"
  "<Eq><FieldRef Name='FirstName'/><Value Type='Text'>Jack</Value></Eq>"
  "</And></Where>";
SPListItemCollection items = list.GetItems(query);

(questa è la specifica del modello a oggetti, ma si estende naturalmente alla chiamata dei servizi web)

Quindi passeresti attraverso gli elenchi e costruirai il tuo batch.

Allo stesso modo, per ottenere l'elemento dell'elenco restituito dal modello a oggetti di Sharepoint 2010 che può essere utilizzato nel valore corrispondente in C # di un nodo chiave in xml, dobbiamo eliminare quel carattere aggiuntivo associato alla posizione 1 in xml. Questo può essere fatto come segue:

// Codice per decifrare la stringa XML restituita dall'elemento dell'elenco dei modelli di oggetti di SharePoint Server 2010. - Cortesia - Rajiv Kapoor - ideals.co.in. Visualizza http://www.ideals.co.in/estore/code.php per soluzione completa.

        string sRetVal = "";
        string myXMLStr = "​<robot><Key>ConstSigned</Key><Value>Rad Is Signed</Value><Key>CodeAddChangeReqSub</Key><Value>ACRS</Value><Key>CodeAddChangeReqInit</Key><Value>ACRI</Value><Key>CodeSupTaskComp</Key><Value>STC</Value><Key>CodeSupApprComp</Key><Value>SAC</Value><Key>CodeSupRejComp</Key><Value>SAR</Value><Key>CodeOperAppr</Key><Value>OPA</Value><Key>CodeOperRej</Key><Value>OPR</Value><Key>Oper1TaskCreated</Key><Value>OTC</Value><Key>Oper2TaskCreated</Key><Value>QCTC</Value><Key>Oper2TaskAppr</Key><Value>QCRA</Value><Key>Oper2TaskRej</Key><Value>QCRR</Value><Key>ApprPending</Key><Value>Approval Pending</Value><Key>PendingProcessing</Key><Value>Pending Processing</Value><Key>PendingReview</Key><Value>Pending Review</Value><Key>Approved</Key><Value>Approved</Value><Key>GroupOperation</Key><Value>Operation</Value><Key>WorkFlowHistoryList</Key><Value>/Lists/Workflow History</Value><Key>ColInitDateTime</Key><Value>Initiated Date Time</Value><Key>ColWorkFlowHistoryParentInst</Key><Value>Workflow History Parent Instance</Value><Key>ColWorkflowAssId</Key><Value>Workflow Association ID</Value><Key>ColListId</Key><Value>List ID</Value><Key>ColPrimaryItemId</Key><Value>Primary Item ID</Value><Key>ColDate</Key><Value>Date Occurred</Value><Key>ColOutcome</Key><Value>Outcome</Value><Key>ColDesc</Key><Value>Description</Value><Key>ColCreated</Key><Value>Created</Value><Key>ColTaskStatus</Key><Value>TaskStatus</Value><Key>ServiceReqList</Key><Value>Service Request</Value><Key>CAUEventList</Key><Value>Events</Value><Key>ReqStatus1</Key><Value>Request Status</Value><Key>ReqStatCode</Key><Value>Request Status Code</Value><Key>ColumnCode</Key><Value>Code</Value><Key>SuperUser</Key><Value>SuperUser</Value><Key>AssignedTo</Key><Value>AssignedTo</Value><Key>TaskListId</Key><Value>ID</Value><Key>DocLibId</Key><Value>List</Value><Key>WorkflowInstanceId</Key><Value>WorkflowInstanceID</Value><Key>TaskTitle</Key><Value>Title</Value><Key>Priority</Key><Value>Priority</Value><Key>ReqStatusCode</Key><Value>Request Status Code</Value><Key>ServiceRequestList</Key><Value>Service Request</Value><Key>CAUEventList</Key><Value>Events</Value><Key>ColumnDesc</Key><Value>Description</Value><Key>ColumnStatus</Key><Value>Status</Value><Key>Completed</Key><Value>Completed</Value><Key>ReqStatus</Key><Value>Request Status</Value><Key>ColumnTaskStatus</Key><Value>TaskStatus</Value><Key>ColumnPerComp</Key><Value>PercentComplete</Value><Key>Rejected</Key><Value>Rejected</Value><Key>CodeSupTaskCreated</Key><Value>STC</Value><Key>CodeSupTaskInit</Key><Value>SAI</Value><Key>Oper1TaskInit</Key><Value>OPI</Value><Key>Oper2TaskInit</Key><Value>QCRI</Value><Key>ColActedBy</Key><Value>Acted By</Value><Key>WorkFlowCode</Key><Value>Workflow Code</Value><Key>ProcCode</Key><Value>Process Code</Value></robot>";
        string myXMLStr1 = myXMLStr;
        int ln = myXMLStr.Length;
        int lnMinus1 = ln - 1;
        char[] myst = { ' ', ' ', ' '};// create a long array enough to fit the xml
        string mys = "";
        object m1 ;
        string m2 = ""; 

        myXMLStr.CopyTo(0, myst, 0, ln);            m1 = myst.Clone();
        m2 = new string(myst);// m1;// ToString();
        m2.TrimStart();
        m2.TrimEnd();
        m2 = m2.Substring(1);
        sRetVal = GetConfigVal(m2, "ProcCode");
        Console.WriteLine("****#*" + sRetVal + "*#******");

Non ho familiarità con l'uso dei servizi Web, ma presumo ce ne sia uno per la ricerca. Usando l'API, creare una SPQuery e utilizzare CAML per ottenere gli elementi dell'elenco che si desidera rimuovere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top