分享人: 广州华软 无名

一. 前言

虽然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,给我们开发带来便利,提高了开发效率。

SharePoint代码建表(实战)的更多相关文章

  1. MySQL用程序代码建表(1)

    一.创建表格代码格式 create table <表名>( <列名> <数据类型及长度> [not null], <列名> <数据类型及长度> ...

  2. MatrixOne从入门到实战04——MatrixOne的连接和建表

    MatrixOne从入门到实战--MatrixOne的连接和建表 前景回顾 前几篇文章,为大家介绍了MatrixOne这个产品,以及编译.部署MatrixOne的服务. 直通车: MatrixOne从 ...

  3. vue.js+koa2项目实战(六)数据库建表

    数据库建表 1.打开 MySQL 终端 2.查看所有数据库 show databases 3.创建数据库 create database pet 4.进入数据库 use pet 5.创建数据表 cre ...

  4. Hibernate不能自动建表解决办法

    最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且 ...

  5. 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  6. [转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言

    最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且 ...

  7. (转)Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  8. Oracl用代码建标

    建标还可以通过编写代码的方式实现,这样在建许多类似的表的时候可以极高建表的效率. create table SCORE                   --建立表名(                ...

  9. PowerDesigner连接Oracle数据库建表序列号实现自动增长

    原文:PowerDesigner连接Oracle数据库建表序列号实现自动增长 创建表就不说了.下面开始介绍设置自动增长列. 1 在表视图的列上创建.双击表视图,打开table properties — ...

随机推荐

  1. 一个实时收集MySql变更记录的组件CanalSharp.AspNetCore

    一.关于CanalSharp CanalSharp 是阿里巴巴开源项目 Canal 的 .NET 客户端.为 .NET 开发者提供一个更友好的使用 Canal 的方式.Canal 是mysql数据库b ...

  2. 学习python的第三天

    4.28日总结 一.关于python 1.交互式 说一句解释一句 2.命令行式 1.编写文件并且保存 2.打开python解释器,在pyrhon中打开文本,读入内存(python打开的时候,翻译不是瞬 ...

  3. C++基础——类继承

    一.前言  好吧,本系列博客已经变成了<C++ Primer Plus>的读书笔记,尴尬.在使用C语言时,多通过添加库函数的方式实现代码重用,但有一个弊端就是原来写好的代码并不完全适用于现 ...

  4. 禁止WPS2019开机自启动

    最近开机发现WPS总是自己启动,导致开机速度会慢5s左右,从网上找了很多办法都没用,包括运行+msconfig,启动项里面没有WPS:杀毒软件自启动管理里面也没有找到WPS,百度了一圈也没有找到任何有 ...

  5. JAVAFX之tableview界面实时刷新导致的内存溢出(自己挖的坑,爬着也要出来啊0.0)

    这几天遇到了一个问题,不幸开发的一个cs架构的工具,客户端开启后,内存一直在缓慢增长最终导致进程卡死,花了4天时间,终于爬出来了... 客户端通过timer定时器每30秒查询一次数据库以及一些业务逻辑 ...

  6. LDAP概念和原理介绍

    LDAP概念和原理介绍 相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”.“LDAP的主要产品”.“LDAP的基本模型”.“ ...

  7. Git实际使用

      初始化 git init  — cd到目录,初始化仓库 git init name — 新建文件,并初始化仓库 .gitignore    — 忽略文件(https://github.com/gi ...

  8. java中的int与byte的转化

    java中的int与byte的转化 1.基础准备 1.1.原码 就是二进制码,最高位为符号位,0表示正数,1表示负数,剩余部分表示真值 1.2.反码 在原码的基础上,正数反码就是他本身,负数除符号位之 ...

  9. python --- 插入排序算法

    先上一张图,看看能不能从里面悟出些什么: 问题的解决思路: 就是当插入第i个的时候,前面的[i- 1]个已经排好了,这时候lst[i]就倒过来逐个和前面的关键字顺序进行比较,找到插入位置即将lst[i ...

  10. Kubernetes 笔记 11 Pod 扩容与缩容 双十一前后的忙碌

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...