2009-07-31 8 views
1

Ich möchte ein Element in einer Liste löschen, wenn es mit dem UpdateListItems-Webdienst mit einigen Kriterien übereinstimmt. Ich kenne die ID des Listenelements nicht, das ich löschen möchte, kenne aber die Kriterien.Stapelelement im Sharepoint zum Löschen eines Listenelements, wenn Sie die ID nicht kennen

Zum Beispiel in SQL könnte ich tun:

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

Wie würden Sie ein Batch-Element schreiben, dies zu tun?

aktualisieren

Wäre es so etwas wie dieses?

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

Ist die ID für die Methode oder die ID der Sache, die Sie löschen möchten?

aktualisieren

ich den folgenden Code und den Fehler versucht haben, die zurückgegeben wird, ist

Invalid URL Parameter 

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

Mein erraten ist, dass es nicht möglich ist, ohne die ID zu tun ...

Antwort

1

Das sieht nicht möglich aus.

Mein Weg ringsum war, die Liste abzufragen und die IDs zu bekommen. Loop für die Antwort ziehen Sie die IDs dann erstellen Sie eine Methode für jede ID, um es zu löschen.

0

Ich bin nicht so vertraut mit der Verwendung der Webdienste, aber ich nehme an, es gibt einen für die Suche. Mit der API würden Sie eine SPQuery erstellen und mithilfe von CAML die Listenelemente abrufen, die Sie entfernen möchten.

+0

Ich bin nicht sicher, auf whatthe caml aussehen sollte ... – John

2

Als Ergänzung zu ChrisB Antwort (Formatierung einer CAML-Abfrage in einem Kommentar schien nicht zu arbeiten), dann würden Sie die Abfrage so etwas wie dies machen:

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

(das ist das Objektmodell Spezifikation, aber es erstreckt sich natürlich in die Webservices call)

Dann würden Sie die Liste Artikel durchlaufen und bauen Sie Ihre Charge.

+0

Wollen Sie damit sagen, dass ich meine critera dh Jack Baure Abfrage der Liste mit den Informationen habe ich die IDs bekommen müssen Mit den IDs ich Erstellen Sie mein Batch-Skript Führen Sie das Batch-Skript zu löschen Ich sehe, wie dies funktionieren würde und das Endziel wäre das gleiche, es scheint nur ein bisschen langer Weg, es zu tun. – John

+0

Fast.Sie benötigen sowohl die ID als auch den Dateinamen aus der Eingangsabfrage. Sie füllen dann Ihren Stapel mit der ID und dem FileRef-Feld. Ja, ein wenig ausgeklügelt, aber da das Batch-Element keine Filterung unterstützt, stecken Sie trotzdem in einem zweistufigen Ansatz fest. –

1

Um Listenelemente aus dem Objektmodell Sharepoint 2010 zu erhalten, die in C# entsprechenden Wert eines Schlüsselknotens in XML verwendet werden können, müssen wir das zusätzliche Zeichen an Position 1 in der XML entfernt werden. Dies kann folgendermaßen geschehen:

// Code zum Entschlüsseln der XML-Zeichenfolge, die vom SharePoint Server 2010-Objektmodell-Listenelement zurückgegeben wurde. - Höflichkeit - Rajiv Kapoor - ideals.co.in. Zeigen Sie http://www.ideals.co.in/estore/code.php für die vollständige Lösung an.

 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 + "*#******"); 
Verwandte Themen