SPQuery - リスト項目を更新するにはどのフィールド(ViewFields)が必要ですか。
-
10-12-2019 - |
質問
SPQUERYでは、リスト項目を更新するためにどのフィールドが必要であるか?
SPQuery query = new SPQuery();
query.Query = @"
<OrderBy>
<FieldRef Name='ID' Ascending='true' />
</OrderBy>";
query.ViewFields = string.Concat(
"<FieldRef Name='ID' />",
"<FieldRef Name='Title' />");
query.ViewFieldsOnly = true;
query.RowLimit = 2000; // Effective batch size.
query.QueryThrottleMode = SPQueryThrottleOption.Override;
.
フィールドを変更せずにlistItem.Update()
を実行すると、エラー'value does not fall within the expected range'
で更新が失敗します。しかし、ViewFieldsOnly
をfalseに変更すると、アップデートは成功します。私の質問は、一覧項目を正常に更新するのに必要なフィールド(変更された可能性のあるフィールドを除く)?
解決
AFAIK viewFieldOnlyセットに照会した後であるが spquery.viewfieldsonlyとsplistitem の更新は、他のID、UniqueID、オブジェクトタイプ、...
しかし私の勧告は間違いなく試しても、ViewFieldsonlyをfalseに設定してください。
他のヒント
私はこの問題を抱えていて、それを丸くすることができました。私はViewFieldsにListItem IDを含めて、list.getItembyIDを使用して新しいSplistItem変数を作成しました。その後、この新しい変数を使用して通常のリスト項目の更新を実行できます。
SPQuery q = new SPQuery();
q.Query = "Query here";
q.ViewFields = "...Fields Here...<FieldRef Name='ID' />";
q.ViewFieldsOnly = true;
foreach (SPListItem item in list.GetItems(q))
{
SPListItem i = list.GetItemById(int.Parse(item["ID"].ToString()));
//code to update item here
i.Update();
}
.
それはこれまでで最高の解決策ではないかもしれませんが、私に稼働しています。
所属していません sharepoint.stackexchange