自定义Sharepoint 2010表单中的PeopleEditor控件无法正常工作

时间:2013-02-08 21:45:35

标签: asp.net sharepoint sharepoint-2010

我正在开发自定义表单,用于将项目添加到sharepoint 2010自定义列表中。在我的add.aspx网站上,我使用以下网页控件:

<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这样的集合?我需要以某种方式获取这些值以在“保存”点击事件上执行服务器端验证。

顺便说一句。是否存在Web控件用于每种字段类型的信息? 即:
SharePoint:RadioButtonChoiceField - 选择
SharePoint:TextField - 文本
SharePoint:BooleanField - Boolean

1 个答案:

答案 0 :(得分:0)

尝试使用FormField它将为您采用默认控件模板,如果您有自定义字段,它也将采用自定义控件。

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

编辑:在回复您的评论时,以下是解析用户字段值的正确方法:

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
  }