2

MOSSのドキュメントライブラリの新しいアイテムのRolesAssignmentsをクリーンアップするイベントハンドラーを開発しています。すべてのRolesAssignmentsを効率的にクリーンアップできる方法を探しましたが、シームがRolesAssignmentsをループして、1つずつ削除するのが最善の方法ですか?アイテムのすべてのRolesAssignmentsをクリーンアップする別の方法はありますか?

RolesAssignmentsのクリーニングに使用しているコードは次のようになります。

    for (int i = ListItem.RoleAssignments.Count - 1; i >= 0; --i)
    { 
        ListItem.RoleAssignments.Remove(i); 
    }

誰かがこれに対処する方法について何かアイデアがありますか?

4

3 に答える 3

2

質問の本文で示した例は、これを行う最も正しい方法です。ResetRoleInheritance と BreakRoleInheritance は必要なことを実行できますが、これはそれらが実行する操作の副作用です。それらの目的は、RoleAssignments を削除することではなく、ロールの継承を操作することです。MSDN から:

ResetRoleInheritance - "ローカル ロールの割り当てを削除し、親オブジェクトからロールの割り当てに戻します。"

BreakRoleInheritance - 「親から継承するのではなく、項目に固有の役割の割り当てを作成します。」

役割の継承が既に壊れていて、特定の役割の割り当てを使用している場合は、質問にあるようにループを使用してそれらを削除する必要があります。

于 2008-12-09T19:04:48.800 に答える
1

私には答えがあります。プロパティ SPListItem.BreakRoleInheritance(false) を配置して、ロールの継承を解除し、ロールの割り当てを削除します。

于 2008-12-09T17:51:40.523 に答える
-1

ResetRoleInheritance はどうですか? これにより、すべての RoleAssignments がクリアされます。

于 2008-12-09T16:02:58.933 に答える