PeopleEditor Control

PeopleEditor Control

При разработке форм собственных в Visual Studio для Share Point этот контрол очень помог. Позволяет выбирать из списка юзеров сервера необходимых нам. Нет необходимости самому писать модальные окна, мучаться с колбэками.

Собственно, элемент состоит из 3-х частей:

  • текстовое поле, куда вносится имя;
  • кнопка, чтобы проверить заполнено ли имя;
  • кнопка Browse для просмотра списка юзеров;

При нажатии на Browse открывается модальное окно, где вы можете выбрать необходимого(-ых) юзеров.

Когда введёте имя, можете проверить, есть ли такой юзер в системе (это в случае, если вы вводите сами, а не используется Browse).

Синтаксис

При работе с шаблоном при включенном мастере можно просто из тулбокса перетащить элемент, код в шаблоне автоматически сгенерируется. Или можете сами вставить код подобный этому.

<spuc:PeopleEditor ID="PeopleEditorWF" runat="server" Height="15px" width="260px" AllowEmpty="false" MultiSelect="true" SelectionSet="User"  />
Предварительно, конечно, необходимо подключить соответсвующую директиву.
<%@ Register TagPrefix="spuc" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
Если создаём элемент ручками в коде, а не в шаблоне, то выглядеть это будет примерно так:
private PeopleEditor pEditor;private void EnsureChildControls(){pEditor = new PeopleEditor();pEditor.AutoPostBack = true;pEditor.ID = "PeopleEditor1";pEditor.AllowEmpty = false;pEditor.MultiSelect = false;PanelWithEditor.Controls.Add(pEditor);}
Элемент является частью Microsoft.SharePoint.dll с пространством имён: Microsoft.SharePoint.WebControls namespace.

Свойства

Есть не мало свойств элемента, которые позволят сконфигурировать функционал PeopleEditor’а на свой вкус:

  • AutoPostBack: если хотите, чтоб элемент немедленно реагировал на действия юзера.
  • AllowEmpty: если в true, то вы обязано имя в поле ввести.
  • AllowTypeIn: если в false, то юзер не сможет сам ввести имя. Ему разрешается лишь выбирать из списка (нажав Browse)
  • CommaSeparatedAccounts: вы может инициализировать элемент строкой со списком имён, отделённых запятой.
  • EntitySeparator: разделитель, по умолчанию ‘;’.
  • ErrorMessage: можно поменять сообщение об ошибке, которое стоит по умолчания.
  • ID: идентификатор элемента.
  • MultiSelect: если поставить в true, то можно выбирать несколько пользователей.
  • NoMatchesText: сообщение об ошибке, которое появляется в случае, если не найдено совпадение.
  • PlaceButtonsUnderEntityEditor: если в true, то кнопки управления будут под текстовым полем.
  • PrincipalSource: если у вас несколько источников, откуда могут выбираться юзеры, выберите желаемый.
  • SelectionSet: строка со списком типов аккаунта (account types), которые разрешаются (определено в AccountType enumeration).Как пример:pEditor.SelectionSet = «User,SecGroup,SPGroup»;
  • SharePointGroup: можно ограничить список пользователей, которых можно выбрать, задав в этом параметре имя группы из SharePoint вашего сайта.
  • ShowButtons: если хотите скрыть кнопки Check и Browse, то установите в false.
  • ValidatorEnabled: если в true, то валидация будет на стороне клиента.

Полный список можно посмотреть на MSDN.

Метода

  • GetAccountFromSid: возвращает имя аккаунта, которое ассоциируется с SID’ом, который указываем в параметрах метода.
  • UpdateEntities: если хотите инициализировать элемент своими данными (ArrayList элементов PickerEntity) и сразу их проверить. Как-то так:
    System.Collections.ArrayList entityAList = new System.Collections.ArrayList();PickerEntity entity = new PickerEntity();entity.Key = SPContext.Current.Web.CurrentUser.LoginName;//текущего юзера добавляемentity =  pEditor.ValidateEntity(entity);entityAList.Add(entity);pEditor.UpdateEntities(entityAList);

Дизайн

Когда происходит интерпритация в html, то довольно криво порой отображается элемент. К примеру, даже если вы зададите выоту элемента, то она будет всё равно стандартная. Если хотите свой стиль сделать, то что-то подобное вставьте:

<style  type="text/css">#ctl00_PlaceHolderMain_PeopleEditorWF_upLevelDiv {height:15px !important; width:260px; }</style>
Здесь PeopleEditorWF — это идентификатор вашего элемента. PlaceHolderMain — идентификатор родительского элемента. В данном случае стили для элемента по id назанчаются. Можно свой класс (CssClass) элементу задать. В коде будет что-то вроде:
<style  type="text/css">   .PEditor{...}</style><spuc:PeopleEditor ID="PeopleEditorWF" runat="server" Height="15px" width="260px" AllowEmpty="false" CssClass="PEditor" MultiSelect="true" SelectionSet="User"  />

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *