Frage

Ich habe die Entwicklung eines Event-Handler die RolesAssignments des neuen Elements einer Dokumentbibliothek in MOSS aufzuräumen. Ich habe nach einem Verfahren gesucht, die alle RolesAssignments effizient reinigen konnte, obwohl der beste Weg, ich Nähte gefunden Schleife durch die RolesAssignments zu sein und eins nach dem anderen löschen? Gibt es eine andere Möglichkeit, alle RolesAssignments für einen Artikel zu reinigen?

Der Code, den ich für die Reinigung der RolesAssignments bin mit wie folgt aussehen:

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

Hat jemand eine Idee, wie man damit umgehen?

War es hilfreich?

Lösung 2

ich die Antwort haben, legen Sie die propertie SPListItem.BreakRoleInheritance (false) die Rolle Vererbung und entfernen Sie die Rollenzuweisungen zu brechen.

Andere Tipps

Das Beispiel, das Sie innerhalb des Körpers Ihrer Frage gegeben haben, ist der richtige Weg, dies zu tun. ResetRoleInheritance und BreakRoleInheritance können tun, was Sie brauchen, aber das ist die Nebenwirkung der Operationen, die sie ausführen. Ihr Zweck ist nicht RoleAssignments zu entfernen, sondern arbeitet auf Rolle Vererbung. Von MSDN:

ResetRoleInheritance - „Entfernt die lokale Rollenzuweisungen und kehrt in den Rollenzuweisungen vom übergeordneten Objekt. "

BreakRoleInheritance - „schafft einzigartige Rollenzuweisungen für das Element, anstatt sie von einem Elternteil erben. "

Wenn Rolle Vererbung bereits gebrochen ist und Sie bestimmte Rollenzuweisungen verwenden, sollten Sie entfernen Sie sie mit einer Schleife, wie Sie in Ihrer Frage haben.

Wie wäre es ResetRoleInheritance? Dies sollte alle der RoleAssignments löschen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top