博客地址 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. (2.14)Mysql之SQL基础——游标

    (2.14)Mysql之SQL基础——游标 关键词:Mysql游标 -- (1)定义游标 declare cur_name cursor for select * from table_name wh ...

  2. 循环链表的实现与操作(C语言实现)

    循环链表是还有一种形式的链式存贮结构.它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环. 循环链表的操作 1,循环链表的新操作 2, 获取当前游标指向的数据元素 3, 将游标重置指向链 ...

  3. input输入框type=file时accept中可以限制的文件类型(转载)

    转载自: input type=file accept中可以限制的文件类型 在上传文件的时候,需要限制指定的文件类型. <input type="file" accept=& ...

  4. Mybatis怎么在mapper中用多个参数

    原文地址:https://github.com/mybatis/mybatis-3/wiki/FAQ How do I use multiple parameters in a mapper? Jav ...

  5. JQuery表格操作的常用技巧总结

    JQuery对表格进行操作的常用技巧. 1.表格奇数行和偶数行分别添加样式 复制代码代码如下: $(function(){  $('tr:odd').addClass("odd") ...

  6. java打印随机函数

    一 ,打印1-10的随机函数 public static void randomprint(){      for (int i=0;i<100;i++){          //打印一百次  ...

  7. ASP.NET 无法生成临时类(result=1)图解

    说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.InvalidOperationExcep ...

  8. Codeforces Round #520 (Div. 2) Solution

    A. A Prank Solved. 题意: 给出一串数字,每个数字的范围是$[1, 1000]$,并且这个序列是递增的,求最多擦除掉多少个数字,使得别人一看就知道缺的数字是什么. 思路: 显然,如果 ...

  9. 892. Surface Area of 3D Shapes

    问题 NxN个格子中,用1x1x1的立方体堆叠,grid[i][j]表示坐标格上堆叠的立方体个数,求这个3D多边形的表面积. Input: [[1,2],[3,4]] Output: 34 思路 只要 ...

  10. 20165207 预备作业3 Linux安装及学习

    Linux安装及学习 假期我没有把我的电脑带回家,受到家里的台式机内存和网吧的一些条件的限制我只在台式机安装了32位系统然后学习了实验楼的Vim课程以及Linux的前八课. 问题与解决 安装过程 我家 ...