SharePoint, wie aktualisiere ich ein Listenelement aus dem Webdienst mit einer Where -Klausel?

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

  •  24-10-2019
  •  | 
  •  

Frage

Ich habe ein Szenario, in dem ich ein Listenelement aktualisieren muss, aber ich kenne die interne ID des Listenelements nicht - daher funktioniert das Folgende für mich nicht:

batchElement.InnerXml = "<Method ID='1' Cmd='Update'>" +
            "<Field Name='ID'>" + id + "</Field>" + 
            "<Field Name='DeliveryStatus'>" + newStatus.ToString() + "</Field></Method>";

Stattdessen habe ich ein anderes Feld in der Liste namens ProcessID:

Ich möchte also den Zustellstatus aktualisieren, in dem processID = x

Ist dies mit SharePoint -Webdiensten möglich?

Eine Lösung, an die ich dachte, ist, zuerst eine Auswahl für die ID basierend auf dem prozessID auszuwählen - dann basierend auf dieser ID zu aktualisieren, aber dies scheint eine verrückte Lösung zu sein. Sicherlich hätten die Erfinder von Moss CAML eine Möglichkeit, eine Liste zu aktualisieren Element mit einer Where -Klausel oder Verwenden eines anderen Feldes für Filtration und nicht nur für alte ID?

Vielen Dank

War es hilfreich?

Lösung

Ich glaube nicht, dass Sie ein Update wo durchführen können. Sie müssen alle Elemente mit Ihrem angegebenen processID entsprechen, um jede der einzelnen Element -IDs zu erhalten.

Da Sie Webdienste verwenden, können Sie dies effizienter gestalten, um sicherzustellen, dass Sie die Sucher -Eigenschaft festlegen, wenn Sie Ihre Auswahl ausführen, um sie nur auf die Spalten zu beschränken, an denen Sie interessiert sind (in diesem Fall ID).

Beispiel:

XmlDocument xmlDoc = new System.Xml.XmlDocument();
XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");

ndQueryOptions.InnerXml = "<ViewAttributes Scope='Recursive' />";
ndViewFields.InnerXml = "<FieldRef Name='ID' />";
ndQuery.InnerXml = query;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top