SharePoint、Where句を使用してWebサービスからリスト項目を更新する方法は?

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

  •  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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top