0

私の要件は、sharepoint リスト アイテム (ユーザーまたはグループ フィールド) からすべてのユーザーを取得し、[読み取り] アクセス許可をさまざまなドキュメント ライブラリに割り当てることです。複数のユーザーが存在するため、リスト項目の更新時に、person フィールドや Group フィールドの前後のプロパティを比較して、新しく追加/削除したユーザーの権限を追加/削除することはできますか?

現在、アイテムの更新時に、既存のユーザー権限をすべて削除し、アイテムの更新時に再度追加しています。個人フィールドまたはグループ フィールドが変更されたかどうかもわかりません。

4

1 に答える 1

0

ItemUpdatingイベント中に列が変更されたかどうかをテストできます。内部SPItemEventPropertiesには、 と呼ばれるプロパティがありますAfterProperties。作業するときは、元の値を保存するか、両方を使用ItemUpdatingできます。BeforePropertiesproperties.ListItem

したがって、列内で何かが変更されたかどうかをテストする場合は、次のコードを使用できます。

if (properties.ListItem["customColumn"] != properties.AfterProperties["customColumn"])
{
}

ただし、複数値のユーザー フィールドがあるため、これらのコレクションは汎用オブジェクトを返すため、これは機能しません。これは、同等のものに変換する必要があります (たとえば、ToString()メソッドを使用して)。

次のことを試してください:

 if(properties.ListItem["column"]?.ToString() != properties.AfterProperties["column"]?.ToString()) 
 {
 }

それが役立つかどうか教えてください。

于 2016-08-12T18:57:51.720 に答える