Sharepoint PeopleEditor: Как узнать, какой тип пользователя / группы возвращается? - PullRequest
6 голосов
/ 03 марта 2011

У меня есть PeopleEditor:

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

Он работает безупречно на странице, то есть я могу выбирать пользователей AD, группы Sharepoint и все, что захочу.

Проблема в том, что яне удается найти свойство в PeopleEditor , какой тип пользователя / группы возвращается .Давайте возьмем следующий пример:

//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"

Я могу сделать несколько «хакерских» вещей, таких как попытка привести возвращенное значение string [sic] как пользователя или группы и выполнить некоторый поток программ на основе исключений.( если пользователь существует, сделайте это, иначе, если группа существует и т. Д. ), но я бы не стал рассматривать этот чистый код.

Есть ли лучший способ выбора людей / группв Sharepoint или лучший способ работы с PeopleEditor?

1 Ответ

5 голосов
/ 03 марта 2011

Используйте значение PrincipalType из хеш-таблицы EntityData:

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

Я не помню все возможные значения, но User и SharePointGroup определенно среди них.


комментарий moontear :

Чтобы просмотреть всю информацию, имеющуюся у этой сущности, полезен массив EntityDataElements. Для SPGroup это содержит SPGroupID, AccountName, PrincipalType.


Комментарий Яниса Вейнбергса :

Возможно, он содержит значения из перечисления Microsoft.SharePoint.Utilities.SPPrincipalType, но я его не проверял.

Вот, пожалуйста,

[Flags]
public enum SPPrincipalType
{
    None = , 
    User = 1,
    DistributionList = 2,
    SecurityGroup = 4,
    SharePointGroup = 8,
    All = SharePointGroup | SecurityGroup | DistributionList | User, 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...