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

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

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

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

  1. using Microsoft.SharePoint;
  2. using Microsoft.SharePoint.WebControls;
  3.  
  4. namespace SharePointProjectCT
  5. {
  6. public class MyField : SPField
  7. {
  8. public MyField(SPFieldCollection fields, string fieldName)
  9. : base(fields, fieldName) { }
  10.  
  11. public MyField(SPFieldCollection fields, string typeName, string displayName)
  12. : base(fields, typeName, displayName) { }
  13.  
  14. public override BaseFieldControl FieldRenderingControl
  15. {
  16. get
  17. {
  18. BaseFieldControl ctr = new MyFieldControl();
  19. ctr.FieldName = this.InternalName;
  20. return ctr;
  21. }
  22. }
  23. }
  24. public class MyFieldControl : BaseFieldControl
  25. {
  26. protected override string DefaultTemplateName
  27. {
  28. get
  29. {
  30. return "MyFieldTemplate";
  31. }
  32. }
  33.  
  34. protected override void CreateChildControls()
  35. {
  36. base.CreateChildControls();
  37.  
  38. }
  39. }
  40. }

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

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

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

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <FieldTypes>
  3. <FieldType>
  4. <Field Name="TypeName">MyField</Field>
  5. <Field Name="ParentType">Text</Field>
  6. <Field Name="TypeDisplayName">我的自定义字段</Field>
  7. <Field Name="TypeShortDescription">我的自定义字段</Field>
  8. <Field Name="UserCreatable">TRUE</Field>
  9. <Field Name="ShowOnListAuthoringPages">TRUE</Field>
  10. <Field Name="ShowOnDocumentLibraryAuthoringPages">TRUE</Field>
  11. <Field Name="ShowOnSurveyAuthoringPages">TRUE</Field>
  12. <Field Name="ShowOnColumnTemplateAuthoringPages">TRUE</Field>
  13. <Field Name="CAMLRendering">TRUE</Field>
  14. <Field Name="FieldTypeClass">SharePointProjectCT.MyField, SharePointProjectCT, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd984e936255a137</Field>
  15. <RenderPattern Name="DisplayPattern">
  16. <HTML><![CDATA[<a target="_blank" href="/_Layouts/MyField/MyFieldTest.aspx?ID=]]></HTML>
  17. <Field Name="ID"/>
  18. <HTML><![CDATA[">]]></HTML>
  19. <HTML><![CDATA[<img src="../_layouts/image/myField.PNG" alt="" border="0" />]]></HTML>
  20. <HTML><![CDATA[ </a>]]></HTML>
  21. </RenderPattern>
  22. </FieldType>
  23. </FieldTypes>

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

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

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

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  3. <Field ID="{FD0FFFC6-813E-4579-BCCF-797DE7724733}"
  4. Name="MyContent"
  5. Type="Note"
  6. RichText="TRUE"
  7. RichTextMode="Text"
  8. DisplayName="内容"
  9. ShowInDisplayForm="TRUE"
  10. ShowInEditForm="TRUE"
  11. ShowInNewForm="TRUE"
  12. Group="自定义字段"
  13. ></Field>
  14. <Field ID="{9F655D24-0579-4B48-AB3F-05A5BCA35463}"
  15. Name="MyCustomField"
  16. Type="MyField"
  17. DisplayName="我的自定义字段"
  18. ShowInDisplayForm="TRUE"
  19. ShowInEditForm="TRUE"
  20. ShowInNewForm="TRUE"
  21. Group="自定义字段"
  22. ></Field>
  23. <!-- 父内容类型: 项目 (0x01) -->
  24. <ContentType ID="0x0100aaeaadf3a9204fc38b69ae330f007f26"
  25. Name="SharePointProjectCT - ContentType1"
  26. Group="自定义内容类型"
  27. Description="我的内容类型"
  28. Inherits="TRUE"
  29. Version="0">
  30. <FieldRefs>
  31. <FieldRef ID="{FD0FFFC6-813E-4579-BCCF-797DE7724733}" Name="MyContent"/>
  32. <FieldRef ID="{9F655D24-0579-4B48-AB3F-05A5BCA35463}" Name="MyCustomField"/>
  33. </FieldRefs>
  34. </ContentType>
  35. </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. C#基础整理(二)

    1.变量类型int.double.string.char.bool.decimal变量使用规则:先声明,再赋值,最后使用 2.命名规范:Camel:第一个单词首字母小写,其他单词首字母大写,其余字母小 ...

  2. SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行(转)

    我们在写Sql语句的时候没经常会遇到将查询结果行转列,列转行的需求,拼接sql字符串,然后使用sp_executesql执行sql字符串是比较常规的一种做法.但是这样做实现起来非常复杂,而在SqlSe ...

  3. Java-idea-FindBugs、PMD和CheckStyle对比

    一.对比 工具 目的 检查项 备注 FindBugs 检查.class 基于Bug Patterns概念,查找javabytecode (.class文件)中的潜在bug 主要检查bytecode中的 ...

  4. HDU2426:Interesting Housing Problem(还没过,貌似入门题)

    #include <iostream> #include <queue> #include <stdio.h> #include <string.h> ...

  5. 多口USB HUB信号延长器 USBX-M200(针对于A客户使用时很棒吧)

    大家都知道A客户是不允许在设备里面出现无线的东东,但是USB的传输距离有很短.咋办呢?? 见下图 http://rextron-cn.com/product_show.asp?id=74

  6. android ReactNative之Cannot find entry file index.android.js in any of the roots

    android ReactNative之Cannot find entry file index.android.js in any of the roots 2018年04月02日 14:53:12 ...

  7. python的构建工具setup.py

    一.构建工具setup.py的应用场景 在安装python的相关模块和库时,我们一般使用“pip install  模块名”或者“python setup.py install”,前者是在线安装,会安 ...

  8. this指向 - 总结

    /* 总结: this 的指向: 1.this 的指向 是在执行上下文时才确定的, 并且确定后不可更改: 2.this 指向 “其执行上下文的环境对象”; “其执行上下文的环境对象” 判读依据如下: ...

  9. ubuntu下 adb devices找不到devices

    不同手机用数据线与ubuntu连接后,执行adb devices,好多出现找不到devices的情况. 这里解决措施: 1. 执行lsusb(连接手机前与后) 找到显示内容的差异项: root@loc ...

  10. 20172305 2018-2019-1 《Java软件结构与数据结构》第七周学习总结

    20172305 2018-2019-1 <Java软件结构与数据结构>第七周学习总结 教材学习内容总结 本周内容主要为书第十一章内容: 二叉查找树(附加属性的二叉树) 二叉查找树是对树中 ...