Sharepoint学习笔记—Site Definition系列-- 2、创建Content Type

 Sharepoint本身就是一个丰富的大容器,里面存储的所有信息我们可以称其为“内容(Content)”,为了便于管理这些Conent,按照人类的正常逻辑就必然想到的是对此进行“分类”。分类所涉及到的层面又必然包括:
  1、分类的标准或特征描述{即:类型属性(或:与该类型项目相关联的属性)}。
  2、对应类的关联动作(即:工作流,行为以及其他设置)
   在Content Type的组织上还有一个Content Type Group,每一种Content Type分属于不同的Group。
   我们以家里的东西为例,你家里的各种物品就算是家里的Content,你可以对它们定义不同的Content Type,如:书籍,厨房用具等等。
   书籍类涉及到的属性可以有书籍名,作者名,ISBN,书籍类别,出版日期。这些属性定义都基于预先定义好的公共属性描述(Site Columns),在书籍类我们可以定义相关的工作流 eg:借阅工作流,保管工作流....,可以定义在操作书籍类时使用到的管理表单,读书卡等等.......
   因此,在Sharepoint中也基本按照此逻辑进行管理,我们看看微软对Content Type的定义:
   内容类型(Content Type) 是 Microsoft SharePoint Foundation 2010 列表或文档库中一类项目或文档的元数据(列)、工作流、行为以及其他设置的可重用集合。借助于内容类型,可以采用集中的可重用方式来管理一类信息的设置。
   也就是说:  内容类型用于定义列表项List Item、文档Document或文件夹Folder的属性。每种内容类型都可以指定: 
      1.与该类型项目相关联的属性
      2.可以从该类型项目启动的工作流
      3.文档模板(针对文档内容类型)
      4.可用的文档转换(针对文档内容类型)
       5.自定义功能
   您可以将内容类型与列表或库相关联。当您执行此操作时,即表示您正在指定该列表或库可以包含此种内容类型的项目,并且该列表或库中的“新建”命令将允许用户新建此类型的项目。
    Sharepoint支持一个Document Library关联多个Content types. 但对于Document library或list中的某个Item,允许一个且只能是一个Contenttype与它关系,这个好理解,好比一个容器可以存放好几类的物品,但一个物品只能属于某一个种类,否就会引起管理上的混乱。
    而一个Content Type必然需要一组描述其特征的属性.例如:猫科动物类,那么就你就要有一组特征来描述猫科动物类以区别其它类。描述特征所用的每一个属性占用一个Field来表示。每一个Field其实都属于某一个Site Column。
    你还可以关联一个Document template给某个Content Type,这样在创建此类Content Type的实例时就可以要求用户同时填写一个基于此Document Template的Document文档,连同包含此Conent Type的List Item实例一起存储在List中。
    当创建一个新的ContentType时,你最好先到Sharepoint预定义的Column Groups(eg:Base Columns, Core Contact and Calendar Columns, Core Document Columns, Core Task and Issue Columns, Custom Columns, Extended Columns)中去找找有没有现成的Site Column供你使用,而不是急着另外创建一个新的Site Column.这样做的好处是为保持系统内Site Column定义的一致性以及今后的维护管理提供方便。
    Content Type是按照层次关系进行组织的,所有的ContentType都有它们的Parent ContentType,如果对它们的Parent Content Type进行修改,那么这种改动会推及到这些Child Content Type,但反之则不然。Content Type的层次关系如下图:

    
    由图可见,所有的Content Type都来自System下的Item,而Item是一个隐藏的Content Type,它里面没有包含任何Column。

    Content Type按作用范围可分为Site Collection Level的和List Level的。前一个层次作用于整个Site Collection,而后一个层次则只对某个特定的List起作用。
   既然Site Columns是按照Site Column Groups进行组织的,Content Types也是按照Content Type Groups进行组织的,下面就是系统常用的Content Type Groups:
         • Document Content Types
         • Folder Content Types
         • Group Work Content Types
         • List Content Types
         • Special Content Types

    我们可以使用两种途径来创建Content Type
         1、通过Sharepoint的UI创建
         2、通过Visual Studio编码创建
    这里我们看看如何通过VisualStudio编码创建,首先打开VS2010,新建一个项目,使用Content Type模板,Solution命名为MyContentType1 

    选择新建的Solution为Farm类型

  

  确定此新建的ContentType基于Picture

 

    新建项目如下图:

 

 

    我们新增的Content Type将在ContentType1点的Elements.xml中进行定义。请输入代码内容如下:

<!-- Parent ContentType: Picture (0x010102) -->
  <ContentType ID="0x01010200404203548fea4e479b7684c563248c8b"
               Name
="MyContentType1 - ContentType1"
               Group
="Custom Content Types"
               Description
="My Content Type"
               Version
="0">
      <FieldRefs>          
          <!--Date Picture Taken-->
          <RemoveFieldRef ID="{a5d2f824-bc53-422e-87fd-765939d863a5}"/>
          <!--Picture Size-->
          <RemoveFieldRef ID="{922551b8-c7e0-46a6-b7e3-3cf02917f68a}"/>
          <!--About Me-->
          <FieldRef ID="{e241f186-9b94-415c-9f66-255ce7f86235}" DisplayName="Information About this Picture"/>
          <!--Cameral Used-->
          <FieldRef ID="{B8A42D20-BE9C-48ED-AFC1-78BD48C523A9}" DisplayName="Cameral Used"/>
      </FieldRefs>
  </ContentType>

 项目如下图:

 对代码说明如下:

一、Content Type相关属性

     

 1、Content Type ID:即内容类型ID

     内容类型的ID是识别内容类型的唯一标识,它隐含了内容类型的上下级继承关系,即从内容类型ID中可以看出此内容类型是继承自哪个父内容类型的,内容类型ID中包含了父内容类型ID,我们可以从内容类型ID号中找到顶级的系统内容类型。
     WSS 3会使用ID号中的这些信息来确定内容类型之间的关系,以及执行操作。 
     内容类型可以使用两种方式中的任何一种表示,而系统内容类型ID为”0x”, 所有其它内容类型都从系统内容类型继承。所有其它内容类型ID都必须使用以上两种方式之一创建一个ID号,并且此ID号在站点集里必须为唯一的,下面就是这两种表示方法:
    规则 a、 父内容类型ID + 两位十六进制的值(两位十六进制的值不能是00),如:0x0101
        WSS自带的内容类型ID均以这种方式生成。例如:基本内容类型Item的ID号为0x01,此ID指示Item的类型内容是直接继承自系统内容类型。文档内容类型(Document content type)的ID号为0x0101,文件夹内容类型(Folder content type)的ID号为:0x0120, 分以这两个ID号,我们可以看出,文档内容类型和文件夹内容类型都继承于Item内容类型,而Item内容类型又继承自系统内容类型   

    规则b、 父内容类型ID + “00” + 十六进制GUID,如:0x010100D5C2F139516B419D801AC6C18942556D   

        WSS在以下几种情况下创建内容类型时,将使用此种规则成生内容类型ID:

          1、 基于其它内容类型创建网站内容类型

          2、 当增加一个网站内容类型到某个列表时,系统会将网站内容类型复制到此列表并生成为列表内容类型,此生成的内容类型ID

       在以下几种情况时,推荐使用GUID方式的内容类型ID:

          1、 继承自系统默认的内容类型,如文档内容类型

          2、 继承自第三方开发的内容类型,使用GUID的内容类型ID,能保证内容类型的唯一,并且不会跟将来开发人员继承此第三方控制生成的新内容类型ID重复

        当你使用GUID方式定义了一个内容类型的ID后,你仍然可以使用第一种方式给继承于此内容类型的类型命名。使用在ID中的GUID可以担当命名空间的角色,任何继承自此内容类型的类型都能加上两位的十六进制数值来表示新ID,如“0x010100D5C2F139516B419D801AC6C18942556D08

        内容类型ID最大长度为512字节,因为一个字节可以存放两个十六进制的值,所以一个内容类型ID最多可使用1024个字符。

        下图是一些系统的ContentType及其ID表

       

  这里是一些Content Type ID的例子

1.创建一个content type,它的GUID {0BB3F82D-2A62-4b77-833C-28045F765D7B} ,它的Parent是contact (0x0106),那么,你可以设置其ID如下:
0x0106000BB3F82D2A624B77833C28045F765D7B
2.创建一个content type,它的GUID {0E3E8F35-3A21-4ed7-8151-816C48E2D64D} ,它的Parent是document (0x0101),那么,你可以设置其ID如下:
0x0101000E3E8F353A214ED78151816C48E2D64D
3.创建一个content type,它的GUID {A6C62A39-E374-4d8d-9EFE-90DD65B659F8} ,它的Parent是 item (0x01),那么,你可以设置其ID如下:
0x0100A6C62A39E3744D8D9EFE90DD65B659F8

   2、Content Type的Name属性:就是我们给这个Content Type起的标识名

   3、Content Type的Group属性:我们把这个Content Type划分入Content Type Group的哪一个组,即分组管理我们的Content Type

   4、Content Type的Description属性: 对这个Content Type的说明

   5、Content Type的Inherits属性: 这个属性要结合我们后面讲的<RemoveFieldRef>元素使用,如果此处设置Interits='True',则<RemoveFieldRef>不会起作用。因此,我们需要取掉它的设置。

   6、Content Type的Version属性:定义它的版本号

  

二、 <FieldRefs>  元素内容

      <FieldRefs> 元素内才是我们真正定义的Content Type的内容,这里我们分别说明

 1、 <RemoveFieldRef>元素 : 此元素定义我们想要移除的Field

       由于我们新增的Content Type是继承自Picture,所以它拥有Picturey这个Parent Content Type的所有Field,即继承关系,但在此处,我们不想要从Picture继承来的"Date Picture Taken" 与 "Picture Size"这两个Field,所以我们需要作的工作包括 :

      a.移除Content Type的Inherits属性

      b.添加<RemoveFieldRef>元素

      因为如果Content Type的Inherits属性设置为Ture,则不管我们在这里设置了任何RemoveFieldRef元素,它们都不会起作用,系统会强行让我们新创建的这个ContentType继承所有其Parent Content Type所具有的fields,所以我们必须要打破我们新定义的Content Type与它的Parent: Picture之间的继承关系。

      接下来就是我们如何知道我们想要取消的Field它们的ID值呢?

      我们可以使用VS2010里的Server Exploer这个工具,当我们使用Server Exploer这个工具建立了与Sharepoint网站的连接后,我们就可以看到此网站的各种对象
        

  展开ContentType节点,找到Picture节点,然后就可以查看到对应Field的ID号,可以直接复制到本Solution中来。

 

 

2、 <FieldRef>元素 : 定义我们想要添加的新的Field

   在本例中,我们添加了两个Fields,一个是系统本来就有的Site Column,名叫About Me,获取其ID的方法同上既:使用Server Exploer

   我们给了它一个新的DisplayName="Information About this Picture",这个DisplayName将会显示在Sharepoint的Content Type的管理UI界面上。   

<!--About Me-->
          <FieldRef ID="{e241f186-9b94-415c-9f66-255ce7f86235}"  DisplayName="Information About this Picture"/>

    上面我们添加或移除的都是系统已经存在的Site Columns,如果我们想要操作的Site Column不存在那怎么办呢,我们既可以通过Sharepoint UI来创建那个Site Column,也可以通过Visual Studio2010来创建,具体的方法参考此文 Sharepoint学习笔记—Site Definition系列-- 创建Site Columns

   

  接下来请Build和部署此Solution,然后到Sharepoint网站去查看

 

可以看到我们新增的Content Type已经出现在预期的位置

 

并且它的内容正是我们此处所定义的内容(移除了两个Fields,添加了两个Fields,其中一个是系统自带的,一个是我们上文用VS2010开发的)

 

 

   

转载于:https://www.cnblogs.com/wsdj-ITtech/archive/2012/09/01/2470274.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arduino byte转string_Java数组转List集合的三驾马车

点击上方 蓝字关注我们来源&#xff1a;blog.csdn.net/x541211190/article/details/79597236前言本文中的代码命名有的可能不太规范&#xff0c;是因为没法排版的问题&#xff0c;小仙已经很努力去解决了&#xff0c;希望各位能多多点赞、分享。好了&#xff0c;不多bb了(不要让…

ES6笔记(4)-- Symbol类型

系列文章 -- ES6笔记系列 Symbol是什么&#xff1f;中文意思是标志、记号&#xff0c;顾名思义&#xff0c;它可以用了做记号。 是的&#xff0c;它是一种标记的方法&#xff0c;被ES6引入作为一种新的数据类型&#xff0c;表示独一无二的值。 由此&#xff0c;JS的数据类型多了…

手把手教你如下在Linux下如何写一个C语言代码,编译并运行

文章目录手把手教你如下在Linux下如何写一个C语言代码&#xff0c;编译并运行打开Ubuntu终端创建 helloworld.c编译C文件手把手教你如下在Linux下如何写一个C语言代码&#xff0c;编译并运行 打开Ubuntu终端 我这里的终端是Windows下的WSL&#xff0c;如果有疑问&#xff0c;…

邮件群发工具的编写(二)数据的保存

数据的保存与读取 人类是在不断探索与改进中进步的 上一篇&#xff0c;邮件群发工具的编写&#xff08;一&#xff09;邮件地址提取&#xff0c;我们讲到了邮箱的提取。 那么这一篇&#xff0c;讲一下提取完的邮箱信息的保存和读取。 首先&#xff0c;我希望对上一篇邮箱提取类…

c++ lambda函数_C++11 之 lambda函数的详细使用

1. lambda 函数概述lambda 表达式是一种匿名函数&#xff0c;即没有函数名的函数&#xff1b;该匿名函数是由数学中的λ演算而来的。通常情况下&#xff0c;lambda函数的语法定义为&#xff1a;[capture] (parameters) mutable ->return-type {statement}其中&#xff1a;[c…

pytorch 正向与反向传播的过程 获取模型的梯度(gradient),并绘制梯度的直方图

记录一下怎样pytorch框架下怎样获得模型的梯度 文章目录引入所需要的库一个简单的函数模型梯度获取先定义一个model如下定义两个获取梯度的函数定义一些过程与调用上述函数的方法可视化一下梯度的histogram引入所需要的库 import os import torch import torch.nn as nn impor…

ubuntu升级python_Ubuntu 升级python3为更高版本【已实测】

2020-04-13 更新安装步骤&#xff1a; 1. 先update一下 sudo apt update 2. 安装依赖库 sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-d…

Framework打包

2019独角兽企业重金招聘Python工程师标准>>> iOS app需要在许多不同的CPU架构下运行&#xff1a; arm7: 在最老的支持iOS7的设备上使用 arm7s: 在iPhone5和5C上使用 arm64: 运行于iPhone5S的64位 ARM 处理器 上 i386: 32位模拟器上使用 x86_64: 64为模拟器上使用…

windows 10 下利用WSL的Linux环境实现vscode C/C++环境的配置

本文主要结合二个工具&#xff0c;介绍如何在windows搭建Linux开发环境&#xff1a; WSL(Windows Subsystem for Linux)VSCode(Visual Studio Code) 文章目录WSL安装VSCode安装配置Linux下的C/C环境1. 打开WSL的控制台2. 更新ubuntu软件3. 安装GCC和GDB4. 配置VSCode(1). 打开…

Windows 11下 WSL使用 jupyter notebook

这里写目录标题前言在WSL下的配置测试运行更优雅的启动方法配置jupyter生成默认配置文件生成秘钥修改配置文件nohup启动前言 一直都使用jupyter notebook&#xff0c;不管做数据分析&#xff0c;还是调试代码&#xff0c;还有写文章都是。但是好像在WSL下又不好使。看了网上有…

sql2000导出mysql_如何将sql2000的数据库导入到mysql中?

展开全部先用SQl2000导出e68a843231313335323631343130323136353331333262373366文本文件&#xff0c;把后缀名改为CSv&#xff0c;再从Mysql中一导入OK参考&#xff1a;第一种是安装mysql ODBC&#xff0c;利用sql server的导出功能&#xff0c;选择mysql数据源&#xff0c;进…

实现日、周、月排行统计 sql

在如今很多系统中&#xff0c;都需要进行日、周、月排行统计&#xff0c;但是在网上寻找 了一番&#xff0c;发现很多都是相对的周、月排行&#xff0c;即周排行则用当前时间减去7天。这样我个人认为并不恰当。如月排行中&#xff0c;假设今天是4月22日,则从3月22日至4月22日之…

产品运行所需的信息检索失败_为服务业注入新活力,华北工控推出服务机器人专用计算机产品方案...

近年来&#xff0c;随着人口老龄化趋势加快和信息科技革命的持续推进&#xff0c;服务机器人已经被当作社会劳动力的一部分在医疗、教育、餐饮等行业广泛应用&#xff0c;市场潜力巨大。01、需求带动消费&#xff0c;科技改变服务服务机器人是国内智能机器人产业发展最快的分支…

Windows更新没有更新提示:从windows 10升级到Windows 11,并WSL下配置cuda

文章目录从windows 10 升级到Windows 11安装WSL的安装配置cuda从windows 10 升级到Windows 11 升级的方法有很多种&#xff0c;各大网站都有。有更新提示的按更新提示操作即可。我的是一直都没有更新提示&#xff0c;也搜索过网上的一些方法&#xff0c;但都不行。还是没法更新…

js修改css样式属性_这个笔记《CSS样式的常见属性及值》,让菜鸟轻松学会包粽子...

常见样式属性及值字体:font-family-size-style: normal(正常)|italic(倾斜)|oblique-weight: normal|bold(粗体)如果组合起来编写: font: style weight size family字体大小的单位可以是 px, em, rem, pt, cm, mm, in, pc文本:colortext-align(水平对齐方式): left|center|righ…

在 VirtualBox 中 CentOS 网络设置

转自&#xff1a;本文发表于水景一页。永久链接&#xff1a;<http://cnzhx.net/blog/minimal-centos-in-virtualbox/>。转载请保留此信息及相应链接。 4. 设置 按照上面的方法安装之后&#xff0c;还需要一些简单的设置&#xff0c;比如网络访问。然后既然是做网页服务器…

vscode C++ 分文件、文件夹编译配置与错误解决

文章目录问题includesourceout配置过程遇到的问题与解决遇到的问题1解决步骤1. ctrl shift p2. 配置json文件修改task.json文件修改launch.json可能遇到的错误1. collect2: error: ld returned 1 exit status2. /mnt/d/tmp/c/source/add.cpp:3:10: fatal error: add.h: No su…

淘淘商城项目mysql服务器_SpringMVC+Spring+Mybatis+Mysql+Maven+Svn[ 淘淘商城项目环境搭建 ]...

背景&#xff1a;淘淘商城项目的环境搭建说明&#xff1a;采用SpringMVCSpringMybatisMysqlMavenSvn结构搭建&#xff0c;在开发之中可以参考其结构和搭建步骤去搭建实际的工程项目工程结构简图&#xff1a;项目结构&#xff1a;---------------------------------------------…

bean validation校验方法参数_项目启动时首先校验Spring Boot配置参数

1. 概述在项目实际开发过程中&#xff0c;为了更好的复用&#xff0c;我们参考Spring Boot Starters&#xff0c;封装了许多企业内部中间件的starter。这些中间件的接入都需要申请并在项目中配置一些特定的参数。我们通过ConfigurationProperties注解&#xff0c;增加了在配置过…

进一步理解:inline-block,vertical-align,line-height

看似三个最常见的概念背后却隐藏了很深的很深“水” 那有多深呢&#xff0c;先来看下面的代码 引出问题 <style>.inline-block {display: inline-block;}.border {border: 1px solid #000000;}.span {width: 100px;height: 100px;}.bak {background: #33CCFF;} .o-hidden…