SharePoint代码建表(实战)

分享人: 广州华软 无名

 

一. 前言

虽然SharePoint提供可视化界面建表,但是,不利于开发自动化部署。通常,如果通过手动建表,我们先在测试环境建表,然后存为模板,再上传到实际环境,最后根据模板来创建列表。况且,有些列表也就一次使用,也就没必要存为模板。

二. 目录

1.代码建表作用

2.如何使用代码建表

2.1前置条件

2.2关键代码

3总结

三. 代码建表作用

开发环境和实际使用环境是分离的,避免重复在各个环境手动建表;

代码和建表分离,如果增减字段,后期要维护多个地方的数据,通过代码,可通过网站或网站集功能统一处理。

通过可视化界面建表,我们需要先建内部名称,然后再修改显示名称,通过代码可以一次搞定。

四. 如何使用代码建表

代码建表有多种方式,一种是通过SharePoint提供的开发模板创建列表,一种是通过SharePoint对象模型创建列表,这里介绍的是使用SSOM对象模型创建列表。

4.1 前置条件

引用Microsoft.SharePoint.DLL类库

引用命名空间Microsoft.SharePoint;

当前登录用户有创建列表权限

4.2 关键代码

先创建列表,在创建表关联字段。

4.2.1 创建列表

var sPWeb= SPContext.Current.Web;

Guid guid = sPWeb.Lists.Add(列表内部名,列表描述, SPListTemplateType.GenericList);

                SPList lst = sPWeb.Lists[guid];

                lst.Title = “列表显示名称”;

                lst.Update();

4.2.2 创建文本字段

SPField tempFld = new SPField(flds, SPFieldType.Text.ToString(), 字段内部名称);

            SPFieldText fld = flds.GetFieldByInternalName(flds.Add(tempFld)) as SPFieldText;

            fld.MaxLength = 长度限制;

            fld.DefaultValue = 默认值;

            fld.Title = 字段名称;

            fld.EnforceUniqueValues = 唯一值;

            fld.Required = 必填

            fld.Update();

4.2.3 创建是否字段

SPField tempFld = new SPField(flds, SPFieldType.Boolean.ToString(), 字段内部名称);

            SPField fld = flds.GetFieldByInternalName(flds.Add(tempFld));

            fld.DefaultValue = 默认值;

            fld.Title = 字段名称;

            fld.Update();

4.2.4 创建数字字段

SPField tempFld = new SPField(flds, SPFieldType.Number.ToString(), 字段内部名称);

            SPField fld = flds.GetFieldByInternalName(flds.Add(tempFld));

            fld.DefaultValue = 默认值;

            fld.Title = 字段名称;

            fld.Update();

4.2.5 创建整数字段

 

SPField tempFld = new SPField(flds, SPFieldType.Integer.ToString(), 字段内部名称);

            SPField fld = flds.GetFieldByInternalName(flds.Add(tempFld));

            fld.DefaultValue = 默认值;

            fld.Title = 字段名称;

            fld.Update();

 

4.2.6 创建选项字段

SPField tempFld = new SPField(flds, SPFieldType.Choice.ToString(), 字段内部名称);

            SPFieldChoice fld = flds.GetFieldByInternalName(flds.Add(tempFld)) as SPFieldChoice;

fld.Choices.AddRange(new string[]{选项值});

            fld.DefaultValue = 默认值;

            fld.Title = 字段名称;

            fld.Update();

 

4.2.7 创建时间字段

SPField tempFld = new SPField(flds, this.FieldType.ToString(), 字段内部名称);

            SPFieldDateTime fld = flds.GetFieldByInternalName(flds.Add(tempFld)) as SPFieldDateTime;

            fld.DefaultValue = 默认值;

            fld.Title = 字段名称;

            fld.DisplayFormat = 日期格式;

            fld.FriendlyDisplayFormat = 日期显示风格;

            fld.Update();

4.2.8 创建查阅项字段

 

            string internalName = flds.AddLookup(字段内部名称,被关联表guid, 是否必填);

            SPFieldLookup fld = flds.GetFieldByInternalName(internalName) as SPFieldLookup;

            fld.Title = 字段名称;

            fld.LookupField =被关联字段;

            fld.Update();

4.2.9 创建用户字段

  SPField tempFld = new SPField(flds, SPFieldType.User.ToString(),字段内部名称);

            SPFieldUser fld = flds.GetFieldByInternalName(flds.Add(tempFld)) as SPFieldUser;

            fld.Title =字段名称;

            fld.AllowMultipleValues =是否多值;

            fld.SelectionMode = 设置选择组还是用户;

            fld.Update();

4.2.10 创建链接字段

 

SPField tempFld = new SPField(flds, SPFieldType.URL.ToString(), 自动内部名);

            SPFieldUrl fld = flds.GetFieldByInternalName(flds.Add(tempFld)) as SPFieldUrl;

            fld.Title = 字段名称;            fld.Required = 是否必填

            fld.Indexed =是否建立索引;

            fld.EnforceUniqueValues =是否唯一

            fld.DisplayFormat =显示图片还是链接

            fld.Update();

五. 总结

对于开发而言,把创建表的过程写在代码里面,方便在同个地方统一维护。

如果一个列表被多个网站使用到,可以将列表作为网站功能。一激活,则多个地方都可以同时使用。

SharePoint给我们提供了很多建立表的api,给我们开发带来便利,提高了开发效率。

posted on 2019-04-01 11:04  广州华软  阅读(318)  评论(0编辑  收藏  举报