0

我想根据 SharePoint 2010 中的选择字段创建自定义字段类型。我的代码: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 回答