博客地址 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 Development - Custom Field using Visual Studio 2010 based SharePoint 2010的更多相关文章

  1. SharePoint Development - Custom List using Visual Studio 2010 based SharePoint 2010

    博客地址 http://blog.csdn.net/foxdave 之前两次我们定义了内容类型和字段,我们现在用它们为这一讲服务--创建一个自定义列表. 打开Visual Studio,打开之前的工程 ...

  2. SharePoint开发中怎样使用Visual Studio给你的Web Part加入图标

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u012025054/article/details/36051545 SharePoint开发中怎样 ...

  3. SharePoint Development - Custom Content Type using Visual Studio 2010 based SharePoint 2010

    博客地址 http://blog.csdn.net/foxdave 本文所述均来自之前实际的项目模块 首先再论述一下SharePoint ContentType内容类型 SharePoint的列表和文 ...

  4. 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序

    原文 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 Jim ...

  5. 在Visual Studio 2015 中添加SharePoint 2016 开发模板

    前言 SharePoint 2016已经发布很久了,然而,默认安装VS2015以后,却没有SharePoint 2016的开发模板.其实问题很简单,和VS2012开发SharePoint 2013一样 ...

  6. Changing Project Binding to Surround SCM Integration Provider with Visual Studio 2010

    Changing Project Binding to Surround SCM Integration Provider with Visual Studio 2010 Sarah Wigser t ...

  7. 如何通过PowerShell在Visual Studio的Post-build中预热SharePoint站点

    问题现象 Visual Studio在开发SharePoint的时候,发布部署包后,首次打开及调试站点页面的时候会非常的慢 解决方案 使用PowerShell脚本,加载SharePoint插件后遍历所 ...

  8. Visual Studio 2010详细安装过程

    Visual Studio 2010在目前看来,应该是使用得比较多的一款微软的软件开发工具集合了,因为它具有以下优点:(1)启动速度快:在相同环境下,相比于Visual Studio 2015来说,2 ...

  9. Visual Studio 2010以及TeamFoundationServer 2010 MSDN免Key版地址分享(转载)

    以下链接转自互联网,已经下载验证SHA1码和MSDN公布的一致,跟我一样不喜欢下试用版再自己动手的同学,请使用最新版的BT工具或者迅雷下载(需要支持Magnet协议) Download Visual ...

随机推荐

  1. JAVA中传递的值还是引用的问题

    public static void main(String[] args) { /*byte b[] = new byte[1024*1024*50]; System.out.println(b); ...

  2. python-pdf添加水印

    0.用到两个扩展模块:ReportLab.PyPDF2. 1.创建水印PDF. 1).创建文字水印pdf文件 代码: #encoding=utf-8 #author: walker #date: 20 ...

  3. 第六章并发编程,异步执行框架executor

    异步执行框架executor是一个接口,只有一个方法.接受一个Runnable做为参数,执行任务. 将任务的执行与提交解耦. 1:executor package java.util.concurre ...

  4. Red Hat Linux相关产品iso镜像下载

    Linux系统各发行版镜像下载(持续更新) http://www.linuxfly.org/post/659/ http://www.linuxidc.com/Linux/2007-09/7399.h ...

  5. 手把手教你学node.js之使用 superagent 与 cheerio 完成简单爬虫

    使用 superagent 与 cheerio 完成简单爬虫 目标 建立一个 lesson 3 项目,在其中编写代码. 当在浏览器中访问 http://localhost:3000/ 时,输出 CNo ...

  6. hdu5073 贪心

    这题说的是给了 n个值每个值 然后 他们的品均值 作为中点 然后每个点到中点的均值的平方 和最小值是多少 有 k 个点可以重新 放过位置 , 这样我们 应该 会选 最近的那个 n-k个点 然后 取他们 ...

  7. 计算机bit是什么意思

    bit是计算机中数据的最小单位,即二进制位,数字0和1 一个字节是八位(8个0和1 或 1 组成的一串二进制) 一个字是16位,等于2个字节 用八位二进制表示的字符叫单字节字符, 用16位二进制数表示 ...

  8. 0510进程 multiprocess模块

    process模块是一个创建进程的模块,借助这个模块,就可以完成进程的创建. 创建模块 import os import time from multiprocessing import Proces ...

  9. 使用Git【转】

    本文转载自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 我们一直用GitHub ...

  10. /etc/rc.local 与 /etc/profile

    1.用户自己源码安装的软件组要自启动,可以在/etc/rc.local中配置,rc.loacl 是rc.d/rc.local的一个软连接.rc.local -> rc.d/rc.local 2. ...