自定义列表字段类型(3)

在上一次我们已经编写好了一个带有格式验证功能的Email地址栏,那么如果需要用到这个自定义字段,必须先对其进行注册,通知SharePoint有了一个新的字段类型。其方法就是编写一个xml文件。

先来看一下这个xml文件的内容,再对其进行一一介绍:

<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
  <FieldType>
    <Field Name="TypeName">EmailField</Field>
    <Field Name="ParentType">Text</Field>
    <Field Name="TypeDisplayName">Email Field</Field>
    <Field Name="TypeShortDescription">Email</Field>
    <Field Name="UserCreatable">TRUE</Field>
    <Field Name="ShowInListCreate">TRUE</Field>
    <Field Name="ShowInSurveyCreate">TRUE</Field>
    <Field Name="ShowInDocumentLibraryCreate">TRUE</Field>
    <Field Name="ShowInColumnTemplateCreate">TRUE</Field>
    <Field Name="FieldTypeClass">EmailField.EmailFieldField,EmailField,Version=1.0.0.0,Culture=neutral,PublicKeyToken=9f4da00116c38ec5</Field>
    <RenderPattern Name="DisplayPattern">
      <HTML><![CDATA[<a href="mailto: ]]></HTML>
      <Column HTMLEncode="TRUE" />
      <HTML><![CDATA[">]]></HTML>
      <Column HTMLEncode="TRUE" />
      <HTML><![CDATA[</a>]]></HTML>
    </RenderPattern>
  </FieldType>
</FieldTypes>

在“FieldType”一节中,定义了和该字段相关的内容,可以看到其大致分为两个部分:

第一部分是关于该字段类型的一些基本设定,比如类型名称(TypeName)、父类型名称(ParentType),

显示名称(TypeDisplayName)是指在列表设置页面中显示的名称:

image

而简短描述(TypeShortDescription)则是在创建栏页面中显示的名称:

image

是否允许用户创建(UserCreatable)指定该字段类型是否可以在创建栏的页面出现,允许用户自行创建(而不是写在列表模板的定义xml文件中)

后面一些就是设置该字段类型是否可以出现在某些列表类型中,比较重要的一个 是FieldTypeClass,定义了该字段类型后台对应的类名和程序集名称,注意都要使用全名,中间用逗号分开

而第二部分是通过一系列的RenderPattern设置该字段类型的显示样式。

RenderPattern大致分为几种,HeaderPattern和FooterPattern定义了在视图页面显示该字段时的栏的头尾样式,DisplayPattern定义了字段内容的显示样式,EditPattern和NewPattern为编辑和新建时的样式,以及PreviewDisplayPattern、PreviewEditPattern和PreviewNewPattern定义了在SharePoint Designer中的样式。

可以注意到,这种样式的定义是通过一种奇怪的可以用CDATA方式搀杂html代码的形式定义的,对了,这又是CAML……其中出现的两个Column结点表示该栏的内容。

写到这里,我们可以发现这个xml其实可以写的很复杂,尤其是在RenderPattern的部分,因为CAML允许我们在定义显示样式的时候使用switch条件,这部分的写法很灵活,我们可以多多参考默认的那些字段是怎么写的(在fldtypes.xml中)。

此外,这个xml文件中还会涉及到自定义属性和自定义属性输入界面的控制,这个放到相应的部分再讲。

另外,非常需要值得注意的,这个xml文件必须以“fldtypes_”开头,才可以被SharePoint识别为字段类型的描述文件。

ok,现在我们把上次编译出来的dll文件拽到GAC里,把这个xml文件放到12\TEMPLATE\XML目录中,重启iis(一定要iisreset,仅回收应用程序池是不行的),然后我们就可以在创建栏的地方看到这个自定义字段类型了,并且它的表现也和我们期望的一致。

在新建界面中格式验证失败时:

image

在显示界面中:

image

并且,这个字段在编辑界面中无法看到(被我们在代码中屏蔽了)。

这两次内容综合起来,我们可以编写一个很简单的自定义字段类型了,它的功能仅仅是使用默认的那些属性、使用默认的输入界面,加上一些其他属性的初始化功能和数据验证功能,在下一次中,我会介绍一下怎样来自己编写输入界面。

(未完待续)

原文地址:https://www.cnblogs.com/erucy/p/2416068.html