SharePoint 2007 ContentType 数据存储方式分析

在SharePoint2007 中提供了一个非常强大的东东——ContentType, 似乎整 Moss2007的自定义列表都是构建于ContentType之上的。

为了能够自己实现SharePoint 2007的自定义列表功能,我研究了一下Content Type。具体功能上的描述,可以看董章河老兄的Blog,已经对ContentType 的功能有比较详尽的描述。

这里就不详述了,这里主要介绍的是当我们在站点上添加一个内容类型后,并且配置它,会在数据库中产生什么数据,产生的数据有什么意义。

如图,我添加了一个内容类型名字为"第二个内容类型",他的父级内容类型是"链接"。

然后我看见在SharePoint 的数据库中的ContentTypes表中新增了一条数据如下(同时还在站点的 _cts文件夹下产生一个同名文件夹,用来放内容类型的模板)


中间的几个字段比较有意思,

一个是ContentTypeID 和一般的ID列不同,它居然存储的是二进制的数据,看了一些介绍后,只发现一个好处把这段二进制的编码翻译成16进制后,

表示了和其他内容类型的继承关系。打个比方:内容类型A的ID 是 0x01010D,内容类型B的ID是 0x0101,那么表明A是继承于B。看起来真是奇怪的想法,还是我

智商太低了不能理解。。。

还有一个IsFromFeature 这个字段从意思上来说,就是是否来源于Feature。对于Feature的功能意义我还不是很了解,只知道可以用它来安装站点列,安装Webpart,安装内容类型。

所以对上面这个字段的意义也拿不准,猜想是是否由Feature创建的意思,我是在SPS上手工创建的自然就是False了。

最后分析一下Definition字段,

<ContentType ID="0x010500AA7D48B0C398CD45943874E5587286B1" Name="第二个内容类型" Group="自定义内容类型" Description="啊啊啊" Version="1">

<Folder TargetName="_cts/第二个内容类型" /><FieldRefs>

<FieldRef ID="{c042a256-787d-4a6f-8a8a-cf6ab767f12d}" Name="ContentType" />

<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" Required="FALSE" Hidden="TRUE" />

<FieldRef ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" Name="LinkTitle" Hidden="TRUE" />

<FieldRef ID="{bc91a437-52e7-49e1-8c4e-4698904b2b6d}" Name="LinkTitleNoMenu" Hidden="TRUE" />

<FieldRef ID="{c29e077d-f466-4d8e-8bbe-72b66c5f205c}" Name="URL" Required="TRUE" />

<FieldRef ID="{9da97a8a-1da5-4a77-98d3-4bc10456e700}" Name="Comments" />

<FieldRef ID="{2a9ab6d3-268a-4c1c-9897-e5f018f87e64}" Name="URLwMenu" />

<FieldRef ID="{aeaf07ee-d2fb-448b-a7a3-cf7e062d6c2a}" Name="URLNoMenu" />

</FieldRefs>

<XmlDocuments><XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">PEZvcm1UZW1wbGF0ZXMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vc2hhcmVwb2ludC92My9jb250ZW50dHlwZS9mb3JtcyI+PERpc3BsYXk+TGlzdEZvcm08L0Rpc3BsYXk+PEVkaXQ+TGlzdEZvcm08L0VkaXQ+PE5ldz5MaXN0Rm9ybTwvTmV3PjwvRm9ybVRlbXBsYXRlcz4=</XmlDocument></XmlDocuments>

</ContentType>

很明显可以看出这就是该内容类型的定义信息。然后再向"第二个内容类型"中添加两栏,一个是新增的站点栏"_Version",一个是原有的站点栏"第二个站点栏"。

该内容类型的Definition变成如下内容,看上去非常正常。

ontentType ID="0x010500AA7D48B0C398CD45943874E5587286B1" Name="第二个内容类型" Group="自定义内容类型" Description="啊啊啊" Version="3">

<Folder TargetName="_cts/第二个内容类型" />

<FieldRefs>

<FieldRef ID="{c042a256-787d-4a6f-8a8a-cf6ab767f12d}" Name="ContentType" />

<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" Required="FALSE" Hidden="TRUE" />

<FieldRef ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" Name="LinkTitle" Hidden="TRUE" />

<FieldRef ID="{bc91a437-52e7-49e1-8c4e-4698904b2b6d}" Name="LinkTitleNoMenu" Hidden="TRUE" />

<FieldRef ID="{c29e077d-f466-4d8e-8bbe-72b66c5f205c}" Name="URL" Required="TRUE" />

<FieldRef ID="{9da97a8a-1da5-4a77-98d3-4bc10456e700}" Name="Comments" />

<FieldRef ID="{2a9ab6d3-268a-4c1c-9897-e5f018f87e64}" Name="URLwMenu" />

<FieldRef ID="{aeaf07ee-d2fb-448b-a7a3-cf7e062d6c2a}" Name="URLNoMenu" />

<FieldRef ID="{78be84b9-d70c-447b-8275-8dcd768b6f92}" Name="_Version" />

<FieldRef ID="{ae0bd35f-bdbb-4a81-93e6-375e2bc62ad7}" Name="第二个站点栏" />

</FieldRefs><XmlDocuments><XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">PEZvcm1UZW1wbGF0ZXMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vc2hhcmVwb2ludC92My9jb250ZW50dHlwZS9mb3JtcyI+PERpc3BsYXk+TGlzdEZvcm08L0Rpc3BsYXk+PEVkaXQ+TGlzdEZvcm08L0VkaXQ+PE5ldz5MaXN0Rm9ybTwvTmV3PjwvRm9ybVRlbXBsYXRlcz4=</XmlDocument></XmlDocuments>

</ContentType>

但是仔细一看,多了一行自定义站点列的信息。站点列的信息为什么存在这里,那么自带的站点列存在哪里呢? 有待研究。

<Field Type="Text" DisplayName="第二个站点栏" Description="萨打法" Required="FALSE" MaxLength="255" Group="自定义栏" ID="{ae0bd35f-bdbb-4a81-93e6-375e2bc62ad7}" SourceID="{51f0af26-ef34-4b23-acbe-278242187d77}" StaticName="第二个站点栏" Name="第二个站点栏"></Field>

aggbug.aspx?PostID=2426

转载于:https://www.cnblogs.com/blueox/archive/2007/03/08/668163.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值