-1

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

<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) 不起作用?我真的很想让这个工作,因为它有 Accounts 集合,其中包含所有域 \ uid 的用户,这些用户放在这个控件中。如何使其工作或如何从 Microsoft.SharePoint.WebControls.PeopleEditor 获取此类集合?我需要以某种方式获取这些值以对“保存”单击事件执行服务器端验证。

顺便提一句。是否有网络控件用于每种字段类型的信息?即:
SharePoint:RadioButtonChoiceField - 选择
SharePoint:TextField - 文本
SharePoint:BooleanField - 布尔值

4

1 回答 1

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
  }
于 2013-02-09T06:14:48.463 回答