SharePoint 2013 图文开发系列之自定义字段
2013-12-07 16:50
387 查看
SharePoint使用的优势,就在于开箱即用、快速搭建,SharePoint自身为我们提供了很多字段类型,已经很丰富了。但是,在实际应用中,我们还需要一些功能特殊的字段,下面,我们简单介绍下字段的开发,大家了解以后,可以按照需求扩展自己的字段类型。
1、新建项目,选择SharePoint 2013 空项目,如下图:
CustomFieldControl Class
15、CustomFieldControl.cs类的前台文件,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115323-4299475b807448d39b3449589d53a0c7.png)
16、CustomFieldControl.cs前台文件完整代码,如下:
17、设置字段的描述文件,主要是字段的定义、字段属性,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115324-69b052d612a6492a99bf4ee11936c6ce.png)
18、字段描述文件完整xml,如下:
19、在列表里添加栏,可以添加属性,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115325-04542bb0d5464a39ad6e3d64ac35744c.png)
20、新建一条项目,图片栏的验证,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115326-960cd3c2cda44c2fbf919bd0e62889db.png)
21、展示页面,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115326-aa5ec54d515b46b880e9eaeac01ca036.png)
22、查看项目页面,不显示url,在图片控件中显示,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115328-19a746261b9543bfaecc6d7ec2a14635.png)
总 结
自定义字段,主要有字段定义、字段控件、字段控件前台、字段描述文件等组成,其中,字段前台文件并非必须,可以添加Render将控件输出,但是不好控制排版,所以复杂的字段需要前台展示。
其开发过程也不复杂,基本就是搭建开发模型,将各个部分创建,然后为各个部分添加代码,建议先编写简单控件,部署没有问题再添加复杂功能,以免出错不好调试。当然,调试附加相应w3wp.exe进程即可。
1、新建项目,选择SharePoint 2013 空项目,如下图:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls; namespace SP2013CustomField { class CustomFieldControl : BaseFieldControl { public TextBox tbStart; public Image myImage; //获取控件的值 public override object Value { get { EnsureChildControls(); if (tbStart != null) { return tbStart.Text; } else { return null; } } set { EnsureChildControls(); if (tbStart != null) { tbStart.Text = (String)value; } } } //重写默认模板 protected override string DefaultTemplateName { get { if (this.ControlMode == SPControlMode.Display) { return this.DisplayTemplateName; } else { return "DefaultCustomFieldControl"; } } } public override string DisplayTemplateName { get { return "DisplayCustomFieldControl"; } set { base.DisplayTemplateName = value; } } //重写控件生成方法 protected override void CreateChildControls() { base.CreateChildControls(); if (this.Field != null) { this.myImage = (Image)TemplateContainer.FindControl("myImage"); this.tbStart = (TextBox)TemplateContainer.FindControl("tbStart"); } if (this.ControlMode == SPControlMode.Display) { string strHeight = base.Field.GetCustomProperty("Height").ToString(); string strWidth = base.Field.GetCustomProperty("Width").ToString(); if (myImage != null) { myImage.ImageUrl = this.ItemFieldValue.ToString(); myImage.Width = Convert.ToInt32(strWidth); myImage.Height = Convert.ToInt32(strHeight); } } } } }
CustomFieldControl Class
15、CustomFieldControl.cs类的前台文件,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115323-4299475b807448d39b3449589d53a0c7.png)
16、CustomFieldControl.cs前台文件完整代码,如下:
<%@ Control Language="C#" %> <%@ Assembly Name="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register TagPrefix="SharePoint" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.SharePoint.WebControls" %> <SharePoint:RenderingTemplate ID="DefaultCustomFieldControl" runat="server"> <Template> <asp:TextBox ID="tbStart" runat="server" /> </Template> </SharePoint:RenderingTemplate> <SharePoint:RenderingTemplate ID="DisplayCustomFieldControl" runat="server"> <Template> <asp:Image ID="myImage" runat="server" /> </Template> </SharePoint:RenderingTemplate>
17、设置字段的描述文件,主要是字段的定义、字段属性,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115324-69b052d612a6492a99bf4ee11936c6ce.png)
18、字段描述文件完整xml,如下:
<?xml version="1.0" encoding="utf-8" ?> <FieldTypes> <FieldType> <Field Name="TypeName">自定义单行文本</Field> <Field Name="ParentType">Text</Field> <Field Name="TypeDisplayName">必须有特定标识开头的单行文本</Field> <Field Name="TypeShortDescription">自定义单行文本</Field> <Field Name="UserCreatable">TRUE</Field> <Field Name="ShowOnListCreate">TRUE</Field> <Field Name="ShowOnSurveyCreate">TRUE</Field> <Field Name="ShowOnDocumentLibraryCreate">TRUE</Field> <Field Name="ShowOnColumnTemplateCreate">TRUE</Field> <Field Name="FieldTypeClass">SP2013CustomField.CustomField, SP2013CustomField, Version=1.0.0.0, Culture=neutral, PublicKeyToken=42c0b47fe35d0f54</Field> //字段属性,如下 <PropertySchema> <Fields> <Field Name="CustomFieldProperty" DisplayName="设置起始标识" MaxLength="255" Type="Text"></Field> <Field Name="Height" DisplayName="图片高度" MaxLength="255" Type="Text"></Field> <Field Name="Width" DisplayName="图片宽度" MaxLength="255" Type="Text"></Field> </Fields> </PropertySchema> </FieldType> </FieldTypes>
19、在列表里添加栏,可以添加属性,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115325-04542bb0d5464a39ad6e3d64ac35744c.png)
20、新建一条项目,图片栏的验证,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115326-960cd3c2cda44c2fbf919bd0e62889db.png)
21、展示页面,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115326-aa5ec54d515b46b880e9eaeac01ca036.png)
22、查看项目页面,不显示url,在图片控件中显示,如下图:
![](http://images.cnitblog.com/blog/256729/201312/07115328-19a746261b9543bfaecc6d7ec2a14635.png)
总 结
自定义字段,主要有字段定义、字段控件、字段控件前台、字段描述文件等组成,其中,字段前台文件并非必须,可以添加Render将控件输出,但是不好控制排版,所以复杂的字段需要前台展示。
其开发过程也不复杂,基本就是搭建开发模型,将各个部分创建,然后为各个部分添加代码,建议先编写简单控件,部署没有问题再添加复杂功能,以免出错不好调试。当然,调试附加相应w3wp.exe进程即可。
相关文章推荐
- SharePoint 2013 图文开发系列之自定义字段
- SharePoint 2013 图文开发系列之自定义字段
- SharePoint 2013 图文开发系列之自定义字段
- SharePoint 2013 图文开发系列之代码定义列表
- SharePoint 2013 图文开发系列之事件接收器
- SharePoint 2013 图文开发系列之InfoPath入门
- SharePoint 2013 图文开发系列之网站栏
- SharePoint 2013 图文开发系列之Visual Studio 创建母版页
- SharePoint 2013 图文开发系列之定义站点模板
- SharePoint 2013 图文开发系列之代码定义列表
- SharePoint 2013 图文开发系列之定义站点模板
- SharePoint 2013 图文开发系列之应用程序页
- SharePoint 2013 图文开发系列之网站栏
- SharePoint 2013 图文开发系列之InfoPath入门
- SharePoint 2013 图文开发系列之列表定义高级篇
- SharePoint 2013 图文开发系列之WebPart
- SharePoint 2013 图文开发系列之创建内容类型
- SharePoint 2013 图文开发系列之WebPart
- SharePoint 2013 图文开发系列之列表定义高级篇
- SharePoint 2013 图文开发系列之InfoPath入门