2011-03-03 7 views
6

Mam PeopleEditor:Sharepoint PeopleEditor: Jak dowiedzieć się, jaki typ użytkownika/grupy został zwrócony?

<SharePoint:PeopleEditor ID="peopleEdit" ... SelectionSet="User,DL,SecGroup,SPGroup" /> 

To działa bez zarzutu na stronie, to mogę wybrać użytkownikom reklam, grup SharePoint i nic by mi się podoba.

Problem polega na tym, że nie mogę znaleźć właściwości na PeopleEditor z jaki rodzaj użytkownika/grupy jest zwracany. Weźmy następujący przykład:

//User: John Doe - mycompany\jondoe is at position 0 
//Sharepoint group: "All Site Users" is at position 1 

PickerEntity pickerEntity1 = (PickerEntity).peopleEdit.ResolvedEntities[1]; 
// pickerEntity1.Key = "All Site Users" 
// pickerEntity1.Claim = null 
// pickerEntity1.DisplayText = "All Site Users" 
PickerEntity pickerEntity0 = (PickerEntity).peopleEdit.ResolvedEntities[0]; 
// pickerEntity1.Key = "mycompany\jondoe" 
// pickerEntity1.Claim = null 
// pickerEntity1.DisplayText = "Doe, John" 

mogę zrobić jakieś „hackish” rzeczy jak próbuje rzucić powrócił string [sic] wartość jako użytkownik lub jako grupa i zrobić jakiegoś wyjątku na podstawie przebiegu programu (jeśli użytkownik istnieje, to, jeśli istnieje grupa itp.), ale nie uznałbym tego czystego kodu.

Czy istnieje lepsza metoda wybierania osób/grup w SharePoint lub lepsza metoda pracy z PeopleEditor?

Odpowiedz

5

Użyj wartości PrincipalType z EntityData hashtable:

string principalType = pickerEntity1.EntityData["PrincipalType"].ToString(); 

nie pamiętam wszystkich możliwych wartości, ale User i SharePointGroup pewno są wśród nich.


moontear „s Komentarz:

Aby wyświetlić wszystkie informacje na ten podmiot ma tablica EntityDataElements jest bardzo pomocna. Dla SPGroup zawiera on SPGroupID, AccountName, .


Janis Veinbergs „s Komentarz:

To może być to, że zawiera wartości od Microsoft.SharePoint.Utilities.SPPrincipalType wyliczenia ale ja jej nie testowane.

Proszę bardzo:

[Flags] 
public enum SPPrincipalType 
{ 
    None = , 
    User = 1, 
    DistributionList = 2, 
    SecurityGroup = 4, 
    SharePointGroup = 8, 
    All = SharePointGroup | SecurityGroup | DistributionList | User, 
} 
+1

Ahhh, idealny! Aby wyświetlić listę wszystkich informacji, jakie posiada ta jednostka, przydatna jest tablica '.EntityDataElements'. Dla grupy SPG zawiera ona "SPGroupID", "AccountName", "PrincipalType" –

+1

Może to być, że zawiera wartości z 'Microsoft.SharePoint.Utilities.SPPrincipalType' enum. Ale nie przetestowałem tego. Proszę bardzo: '[Flags] public enum SPPrincipalType { = None, użytkownika = 1, DistributionList = 2, SecurityGroup = 4, SharePointGroup = 8, All = SharePointGroup | SecurityGroup | DistributionList | Użytkownik, } ' –

+0

@moontear Dodałem twój komentarz do odpowiedzi, ponieważ zawiera ona cenne informacje iw ten sposób jest bardziej czytelny. –