-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) で機能しないのはなぜですか? このコントロールに配置されたユーザーのすべてのドメイン \ uid を含む Accounts コレクションがあるため、これを機能させたいと思っています。それを機能させる方法、または Microsoft.SharePoint.WebControls.PeopleEditor からそのようなコレクションを取得する方法は? 「保存」クリックイベントでサーバー側の検証を実行するには、これらの値を何らかの形で取得する必要があります。

ところで。Web コントロールが各フィールド タイプに使用する情報はどこかにありますか? 例:
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 に答える