SharePoint Development - Custom Field using Visual Studio 2010 based SharePoint 2010

简介: 博客地址 http://blog.csdn.net/foxdave自定义列表的时候有时候需要自定义一些字段来更好地实现列表的功能,本文讲述自定义字段的一般步骤打开Visual Studio,我们还是使用上次创建的小项目,打开。

博客地址 http://blog.csdn.net/foxdave

自定义列表的时候有时候需要自定义一些字段来更好地实现列表的功能,本文讲述自定义字段的一般步骤

打开Visual Studio,我们还是使用上次创建的小项目,打开。我们只做一个简单的字段,一个图片超链接,此例没有附带ascx用户控件,

第一步,添加两个自定义字段类,继承SPField和SPFieldControl,最简单的格式如下所示

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace SharePointProjectCT
{
    public class MyField : SPField
    {
        public MyField(SPFieldCollection fields, string fieldName)
            : base(fields, fieldName) { }

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

        public override BaseFieldControl FieldRenderingControl
        {
            get
            {
                BaseFieldControl ctr = new MyFieldControl();
                ctr.FieldName = this.InternalName;
                return ctr;
            }
        }
    }
    public class MyFieldControl : BaseFieldControl
    {
        protected override string DefaultTemplateName
        {
            get
            {
                return "MyFieldTemplate";
            }
        }


        protected override void CreateChildControls()
        {
            base.CreateChildControls();

        }
    }
}

第二步,添加Field定义文件(XML)

右键工程文件添加SharePoint映射文件夹,选择Templates目录下的XML文件夹,确定

右键XML文件夹,添加一个XML文件,名称为fldtypes_MyField。这里需要注意的是,自定义字段的XML定义文件的名称必须以fldtypes_开头。

<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
  <FieldType>
    <Field Name="TypeName">MyField</Field>
    <Field Name="ParentType">Text</Field>
    <Field Name="TypeDisplayName">我的自定义字段</Field>
    <Field Name="TypeShortDescription">我的自定义字段</Field>
    <Field Name="UserCreatable">TRUE</Field>
    <Field Name="ShowOnListAuthoringPages">TRUE</Field>
    <Field Name="ShowOnDocumentLibraryAuthoringPages">TRUE</Field>
    <Field Name="ShowOnSurveyAuthoringPages">TRUE</Field>
    <Field Name="ShowOnColumnTemplateAuthoringPages">TRUE</Field>
    <Field Name="CAMLRendering">TRUE</Field>
    <Field Name="FieldTypeClass">SharePointProjectCT.MyField, SharePointProjectCT, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd984e936255a137</Field>
    <RenderPattern Name="DisplayPattern">
      <HTML><![CDATA[<a target="_blank" href="/_Layouts/MyField/MyFieldTest.aspx?ID=]]></HTML>
      <Field Name="ID"/>
      <HTML><![CDATA[">]]></HTML>
      <HTML><![CDATA[<img src="../_layouts/image/myField.PNG" alt="" border="0"  />]]></HTML>
      <HTML><![CDATA[ </a>]]></HTML>
    </RenderPattern>
  </FieldType>
</FieldTypes>

关于自定义字段定义的相关说明请戳这里

这里说明两个位置,一是FieldTypeClass,这里填写应用程序dll的名称,PublicKeyToken的获得方式介绍两种:1).把dll拖到GAC里,然后右键属性,可以看到。2). 拖到Reflector里,点击这个dll可以看到。二是字段的在列表视图展示页面的样式,通过RenderPattern来定义,同时需要添加<Field Name="CAMLRendering">TRUE</Field>这一行来声明。

我们这里写了一个图片超链接,链接中传入当前Item的ID。

之后保存部署,在列表的新建列操作里就可以看到自己创建的Field类型了。我们将Field与上一次说到的ContentType整合起来,在ContentType的定义文件中添加此字段声明和引用,如下所示

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Field ID="{FD0FFFC6-813E-4579-BCCF-797DE7724733}"
       Name="MyContent"
       Type="Note"
       RichText="TRUE"
       RichTextMode="Text"
       DisplayName="内容"
       ShowInDisplayForm="TRUE"
       ShowInEditForm="TRUE"
       ShowInNewForm="TRUE"
       Group="自定义字段"
         ></Field>
  <Field ID="{9F655D24-0579-4B48-AB3F-05A5BCA35463}"
       Name="MyCustomField"
       Type="MyField"
       DisplayName="我的自定义字段"
       ShowInDisplayForm="TRUE"
       ShowInEditForm="TRUE"
       ShowInNewForm="TRUE"
       Group="自定义字段"
         ></Field>
  <!-- 父内容类型: 项目 (0x01) -->
  <ContentType ID="0x0100aaeaadf3a9204fc38b69ae330f007f26"
               Name="SharePointProjectCT - ContentType1"
               Group="自定义内容类型"
               Description="我的内容类型"
               Inherits="TRUE"
               Version="0">
    <FieldRefs>
      <FieldRef ID="{FD0FFFC6-813E-4579-BCCF-797DE7724733}"  Name="MyContent"/>
      <FieldRef ID="{9F655D24-0579-4B48-AB3F-05A5BCA35463}"  Name="MyCustomField"/>
    </FieldRefs>
  </ContentType>
</Elements>

更多说明参考微软说明文档

相关文章
SharePoint 2013 图文开发系列之Visual Studio 创建母版页
原文:SharePoint 2013 图文开发系列之Visual Studio 创建母版页   一直以来,对于SharePoint母版页的创建,都是使用SharePoint Designer来创建和修改的,而后接触了SharePoint 2013,发现可以使用Html文件,通过设计管理器导入,然后生成Master页面使用,但是效果不是很好。
1476 0
SharePoint Development - Custom List using Visual Studio 2010 based SharePoint 2010
博客地址 http://blog.csdn.net/foxdave 之前两次我们定义了内容类型和字段,我们现在用它们为这一讲服务——创建一个自定义列表。
949 0
SharePoint Development - Custom Content Type using Visual Studio 2010 based SharePoint 2010
博客地址 http://blog.csdn.net/foxdave 本文所述均来自之前实际的项目模块 首先再论述一下SharePoint ContentType内容类型 SharePoint的列表和文档库可以储存不同类型的内容就叫做内容类型,比如文档库的文档,调查列表的调查等,都称作是内容类型。
847 0
SharePoint 2013 图文开发系列之Visual Studio 创建母版页
  一直以来,对于SharePoint母版页的创建,都是使用SharePoint Designer来创建和修改的,而后接触了SharePoint 2013,发现可以使用Html文件,通过设计管理器导入,然后生成Master页面使用,但是效果不是很好。
1133 0
|
IDE 开发工具 C语言
Visual Studio 2017 安装及使用(新手)
Visual Studio 2017 安装及使用(新手)
2300 0
|
弹性计算 自然语言处理 Windows
通义灵码 Visual Studio 下载安装指南(附安装包)
本安装步骤适用于 Windows 10 及以上操作系统中安装和使用通义灵码。
138503 21
|
前端开发 JavaScript 开发工具
|
Java 开发工具 C++
(2023版本)GraalVM+native-image+Visual Studio 在Win10上全流程安装,避坑+实操
(2023版本)GraalVM+native-image+Visual Studio 在Win10上全流程安装,避坑+实操
1375 1
(2023版本)GraalVM+native-image+Visual Studio 在Win10上全流程安装,避坑+实操

热门文章

最新文章