2013-02-08 3 views
-1

Я разрабатываю специальную форму для добавления элементов в пользовательский список sharepoint 2010. На моем сайте add.aspx Я использую следующие веб-элементы управления:Управление PeopleEditor в пользовательской форме Sharepoint 2010 не работает

<SharePoint:UserField runat="server" ID="Workers" ControlMode="New" FieldName="Workers"/> 

<SharePoint:PeopleEditor runat="server" ID="Managers" ControlMode="New" FieldName="Managers"/> 

, как Вы можете видеть, что они связаны с конкретными полями на список:

<Field ID="{1EE0732A-FDD7-4128-A112-BE136DB948D9}" Name="Workers" DisplayName="Workers" Type="UserMulti" Required="TRUE" Mult="TRUE"/> 

<Field ID="{1A499D66-B23B-40E4-8306-AF40F9081729}" Name="Managers" DisplayName="Managers" Type="UserMulti" Required="TRUE" Mult="TRUE"/> 

Проблема заключается в том, что после того, как я выполнить свою форму и нажмите кнопку «Сохранить», новый элемент появится в списке, но только с заполнением рабочего поля. Почему это не работает для управления PeopleEditor (microsoft.sharepoint.webcontrols.peopleeditor)? Я действительно хотел бы, чтобы эта работа работала, поскольку у нее есть коллекции учетных записей, в которых содержится весь домен \ uid пользователей, который помещается в этот элемент управления. Как заставить его работать или как получить от Microsoft.SharePoint.WebControls.PeopleEditor такую ​​коллекцию? Мне нужно, чтобы эти значения каким-то образом выполняли проверку на стороне сервера на событие «Сохранить».

BTW. есть ли где-то информация, которую веб-элементы управления используют для каждого типа полей? т.е.
SharePoint: RadioButtonChoiceField - Выбор
SharePoint: TextField - Текст
SharePoint: BooleanField - Логическое

+0

вы рассматривали использование InfoPath для этой формы? он будет выполнять большую часть этой работы для вас на основе типов столбцов. –

+0

unfortunatelly У меня нет лицензии для InfoPath ... использование пробной версии также невозможно, спасибо. – user1708217

ответ

0

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

<SharePoint:FormField runat="server" id="fldTitle" FieldName="Title" ControlMode="New" /> 

Edit: В ответ на ваши комментарии, вот правильный способ разобрать значение поля пользователя:

private void ProcessUsers(SPListItem item, string fieldName) 
{ 
    string fieldValue = item[fieldName] as string; 
    SPFieldUserValueCollection users = new SPFieldUserValueCollection(item.Web, fieldValue); 

    foreach(SPFieldUserValue uv in users) 
    { 
    SPUser user = uv.User; 
    // Process user 
    } 
+0

, а затем в коде позади на событии нажатия кнопки «Сохранить» получить значение веб-управления fldTitle и разделить его точкой с запятой для получения массива домена \ uid? Это может быть решением. Немного неприятно, но ... Может быть, кто-то знает, как получить коллекцию домена \ uid из веб-контроля Microsoft.SharePoint.WebControls.UserField в коде? Или заставить его работать с PeopleEditor, как его задавали в описании проблемы? – user1708217

+1

Нет, просто сохраните значение, ничего не меняя. –

+0

Но мне нужно иметь некоторые конкретные сведения о пользователях, которые там, где они вступили, су, я должен сделать разбивку кода и получить информацию о каждом из них. – user1708217

Смежные вопросы