• 自定义列表字段类型(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

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

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

    (未完待续)

  • 相关阅读:
    <<Rust程序设计语言>>个人版(4: 所有权)
    《逻辑学入门》笔记(45-66)
    《逻辑学入门》笔记(23-44)
    <<Rust程序设计语言>>个人版(3.3: 函数/3.4: 注释/3.5: 控制流)
    <<Rust程序设计语言>>个人版(1: 入门/2: 编写猜谜游戏)
    网站如何保护用户的密码
    在 Gin 项目中使用 WebSocket
    《逻辑学入门》笔记(1-22)
    浅谈双重认证逻辑
    某大型网络安全活动中遇到的钓鱼邮件
  • 原文地址:https://www.cnblogs.com/erucy/p/2416068.html
Copyright © 2020-2023  润新知