SPQuery - リスト項目を更新するにはどのフィールド(ViewFields)が必要ですか。

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/85556

  •  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();
        }
.

それはこれまでで最高の解決策ではないかもしれませんが、私に稼働しています。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top