SharePoint、Where句を使用してWebサービスからリスト項目を更新する方法は?
-
24-10-2019 - |
質問
リスト項目を更新する必要があるシナリオがありますが、リスト項目の内部IDがわかりません。したがって、以下は機能しません。
batchElement.InnerXml = "<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + id + "</Field>" +
"<Field Name='DeliveryStatus'>" + newStatus.ToString() + "</Field></Method>";
代わりに、ProcessIDと呼ばれる別のフィールドがリストにあります。
そこで、ProcessID = Xの配信ステータスを更新したい
これは、SharePoint Webサービスを使用して可能ですか。
私が考えていたソリューションの1つは、最初にProcessIDに基づいてIDの選択を行うことです - 次にこのIDに基づいて更新されますが、これはクレイジーな解決策のように思えます。条項の何らかの手段によるアイテム、または単なる古いIDではなくろ過に別のフィールドを使用しますか?
ありがとう
解決
私はあなたがどこでアップデートをすることができるとは思わない。個々のアイテムIDを取得するには、指定されたProcessIDに一致するすべてのアイテムを取得する必要があります。
Webサービスを使用しているため、これをより効率的にする1つの方法は、[この場合、ID)に興味のある列のみに制限するために、Selectを実行するときにViewFieldsプロパティを設定することを確認することです。
例:
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;
所属していません StackOverflow