博客地址 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. python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon)

    python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon) 前言 今天小编YOYO请xiaoming和xiaowang吃火锅,吃完火锅的时候会有以下三种场景: - ...

  2. SLAM FOR DUMMIES 第5-8章 中文翻译

    5,SLAM的处理过程 SLAM过程包括许多步骤,该过程的目标是使用环境更新机器人的位置.由于机器人的里程计通常是存在误差的,我们不能直接依赖于里程计.我们可以用激光扫描环境来校正机器人的位置,这是通 ...

  3. Extjs之表单提交

    Extjs的三种提交方式: 表单Ajax提交,普通提交,单独Ajax提交: 表单Ajax提交(默认提交方式) 提交函数:当按下表单中的提交按钮时执行下面的 btn函数,按照表单的 name进行提交. ...

  4. wcf 远程服务器返回了意外响应: (413) Request Entity Too Large。

    我遇到这个问题的原因是:我使用asp.net 网站调用wcf服务后,通过方法提交数据产生的.我提交的数据是一个实体,包含很多字符串和图片格式的二进制数据超过4M 就报个错误. 后来同事帮忙解决了.他说 ...

  5. 2017ACM/ICPC Guangxi Invitational Solution

    A: A Math Problem 题意:给出一个n,找出有多少个k满足kk  <= n 思路: kk的增长很快,当k == 16 的时候就已经超过1e18 了,对于每一次询问,暴力一下就可以 ...

  6. Mysql优化_ORDER BY和GROUP BY 的优化讲解(单路排序和双路排序)

    ORDER BY 子句尽量使用Index方式排序,避免使用FileSort方式排序,尽可能在索引列上外城排序操作,遵照索引键的最佳左前缀.如果不在索引列上,FileSort有两种算法,Mysql就要启 ...

  7. strlen与sizeof区别

    1. strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止. c ...

  8. scss使用指南--每天一点

    我们平时都称之为 Sass,其实可分成sass和scss, 其中Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),以".sass"后缀为扩展名:而 SCSS ...

  9. Spring 中好用的泛型操作API

    随着泛型用的越来越多,获取泛型实际类型信息的需求也会出现,如果用原生API,需要很多步操作才能获取到泛型,比如: ParameterizedType parameterizedType = (Para ...

  10. Python学习札记(三十四) 面向对象编程 Object Oriented Program 5

    参考:获取对象信息 NOTE 1.type()函数可以用来判断对象的类型: >>> type(123) <class 'int'> >>> type(' ...