如何根据选择类型在新自定义字段中的选择字段中添加标准设置

时间:2012-04-13 11:02:30

标签: visual-studio-2010 sharepoint sharepoint-2010 custom-field-type

我想基于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)?

1 个答案:

答案 0 :(得分:1)

如果您想要一个自定义字段的好例子,请转到Bernado Nguyen-Hoan的blog

您必须将自定义属性添加到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();
}

博客文章还将向您展示如何为该字段设置自己的自定义控件和编辑器。