0

SharePoint 2010 の Choice フィールドに基づいてカスタム フィールド タイプを作成したいと考えています。私のコード: Fldtypes_OpenChoiceField.xml:

<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
  <FieldType>
    <Field Name="TypeName">OpenChoice</Field>
    <Field Name="ParentType">Choice</Field>
    <Field Name="TypeDisplayName">OpenChoice</Field>
    <Field Name="TypeShortDescription">Choice with open answers</Field>
    <Field Name="UserCreatable">TRUE</Field>
    <Field Name="AllowBaseTyp eRendering">TRUE</Field>
    <Field Name="ShowOnListAuthoringPages">TRUE</Field>
    <Field Name="ShowOnDocumentLibraryAuthoringPages">TRUE</Field>
    <Field Name="ShowOnSurveyAuthoringPages">TRUE</Field>
    <Field Name="ShowOnSurveyCreate">TRUE</Field>
    <Field Name="ShowOnColumnTemplateAuthoringPages">TRUE</Field>
    <Field Name="FieldTypeClass">FieldTypes.SharePoint.OpenChoiceField,$SharePoint.Project.AssemblyFullName$</Field>
    <Field Name=" ">/_controltemplates/Fields_SharePoint/OpenChoiceFieldEditor.ascx</Field>
  </FieldType>
</FieldTypes>

OpenChoiceField.cs:

namespace FieldTypes.SharePoint
{
    public class OpenChoiceField :  SPFieldChoice
    {
        public OpenChoiceField(SPFieldCollection fields, string fieldName)
            : base(fields, fieldName)
        {
        }

        public OpenChoiceField(SPFieldCollection fields, string typeName, string displayName)
            : base(fields, typeName, displayName)
        {
        }
    }
}

カスタム フィールド タイプで列を作成すると、[列の追加設定] セクションにデフォルト設定のみが表示されます (説明、必須、一意の強制、デフォルト ビューに追加)。しかし、選択肢フィールドにそのようなすべての設定が必要です(各選択肢を入力してください...、使用する選択肢を表示する、入力選択肢を許可する、デフォルト値)。これらのプロパティをカスタム フィールドに挿入するにはどうすればよいですか? エディット コントロール (/_controltemplates/Fields_SharePoint/OpenChoiceFieldEditor.ascx) にいくつかの標準コントロールを追加する必要があるかもしれません。

4

1 に答える 1

1

カスタム フィールドの良い例が必要な場合は、Bernado Nguyen-Hoan による このブログにアクセスしてください。

次のようにカスタム プロパティを xml に追加する必要があります。

<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
  <FieldType>
    <Field Name="TypeName">ImageUpload</Field>
    ...
    ...
    <PropertySchema>
      <Fields>
        <Field 
            Name="UploadImagesTo"
            DisplayName="UploadImagesTo"
            MaxLength="255"
            DisplaySize="100"
            Type="Text"
            Hidden="TRUE">
          <Default>Images</Default>
        </Field>
      </Fields>
    </PropertySchema>
  </FieldType>
</FieldTypes>

Updateまた、次のメソッドをオーバーライドする必要がありますOpenChoiceFieldClass

public override void Update()
{
  base.SetCustomProperty("UploadImagesTo",
  Thread.GetData(Thread.GetNamedDataSlot("UploadImagesTo")));

  base.Update();
}

このブログ投稿では、フィールド用に独自のカスタム コントロールとエディターを設定する方法も示します。

于 2012-04-13T12:51:45.247 に答える