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,给我们开发带来便利,提高了开发效率。
SharePoint代码建表(实战)的更多相关文章
- MySQL用程序代码建表(1)
一.创建表格代码格式 create table <表名>( <列名> <数据类型及长度> [not null], <列名> <数据类型及长度> ...
- MatrixOne从入门到实战04——MatrixOne的连接和建表
MatrixOne从入门到实战--MatrixOne的连接和建表 前景回顾 前几篇文章,为大家介绍了MatrixOne这个产品,以及编译.部署MatrixOne的服务. 直通车: MatrixOne从 ...
- vue.js+koa2项目实战(六)数据库建表
数据库建表 1.打开 MySQL 终端 2.查看所有数据库 show databases 3.创建数据库 create database pet 4.进入数据库 use pet 5.创建数据表 cre ...
- Hibernate不能自动建表解决办法
最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且 ...
- 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- [转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言
最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且 ...
- (转)Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- Oracl用代码建标
建标还可以通过编写代码的方式实现,这样在建许多类似的表的时候可以极高建表的效率. create table SCORE --建立表名( ...
- PowerDesigner连接Oracle数据库建表序列号实现自动增长
原文:PowerDesigner连接Oracle数据库建表序列号实现自动增长 创建表就不说了.下面开始介绍设置自动增长列. 1 在表视图的列上创建.双击表视图,打开table properties — ...
随机推荐
- jdk源码阅读笔记-AbstractStringBuilder
AbstractStringBuilder 在java.lang 包中,是一个抽象类,实现 Appendable 接口和 CharSequence 接口,这个类的诞生是为了解决 String 类在创建 ...
- 微服务(入门一):netcore安装部署consul
环境准备 vs开发环境:vs2017 consul版本: 1.4.4 netcore版本:2.1 安裝Consul 1.从官网下载consul到本地,选择系统对应的版本进行下载到本地,下载地址:h ...
- [JavaScript] AMD和CMD概述
1. cmd 和 amd 在浏览器中,受网络和浏览器渲染的制约,不能采用同步加载,只能采用异步加载.于是 AMD 规范应运而生 2. AMD AMD(Asynchronous Module Defin ...
- ACM入门之OJ~
所谓OJ,顾名思义Online Judge,一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等.用户程序执行的结果将被Online ...
- SuperMap iObject入门开发系列之六管线区域查询
本文是一位好友“托马斯”授权给我来发表的,介绍都是他的研究成果,在此,非常感谢. 管线区域查询功能针对单一管线图层进行区域多边形框选查询,然后将查询结果输出为列表,并添加定位和闪烁功能,效果如下图所示 ...
- java多线程 生产者和消费者 lock
package com.atguigu.thread.lock; import java.util.concurrent.locks.Condition; import java.util.concu ...
- 物理dataguard 正常切换 脚色转换,switchover_status 状态改变
正常切换切换前: 主库:SQL> select DATABASE_ROLE from v$database;DATABASE_ROLE----------------PRIMARY SQL> ...
- Linux下使用ntpdate进行时间同步
转摘自Linux下使用ntpdate进行时间同步https://www.cnblogs.com/zhi-leaf/p/6281549.html1.安装ntpdate,执行以下命令 # yum inst ...
- C 实现自己构建的数组
#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<stdbool.h>stru ...
- MongoDB 文章目录
基础: MongoDB入门系列(一):基础概念和安装 MongoDB入门系列(二):Insert.Update.Delete.Drop MongoDB入门系列(三):查询(SELECT) MongoD ...