WSS3SDK之:更新内容类型

来源:互联网 发布:串烧制作软件 编辑:程序博客网 时间:2024/05/20 07:18

WSS允许我们可以修改某个内容类型,即使已经将其部署到网站,添加到列表中,或指派给了某列表项。我们还可以确保这些更改可以传播到该网站内容类型的子内容类型。

更新内容类型的方法

有两种标准的方法来更新内容类型。在更新内容类型前,我们需要根据情况选择一种最佳的方法:

  • 方法 1: 对内容类型进行必要的修改,然后将修改推送到所有子内容类型。如果您必须对在使用中的内容类型作出有针对性的,离散的修改用这种做法最好。

    每个内容类型包含一个对其父内容类型的引用。这使得Windows SharePoint Services可以传播或推送父内容类型所做的更改,到子内容类型。当您更改了网站内容类型,您可以选择推送这些变化到所有子代。

    举例来说,假设您需要添加一栏到某个网站内容类型。您可以添加栏到该网站内容类型,然后使用推送功能,以确保该栏添加到所有子内容类型。这包括其他基于此内容类型的网站内容类型,以及基于此基础上的列表内容类型。

  • 方法2: 创建一个新内容类型并进行必要的修改,并将其部署到先前内容类型出现的所有地方,然后将先前的内容类型添加到_Hidden内容类型组下。

    该方法用在当您想要用一个修订版来替换一个内容类型,但是还希望保留原先的指定该内容类型的列表项。

    比如,假设你有一个产品规范内容类型名为ProductSpec, 在公司中已经用了很多年了。现在 产品规范的需求发生了变化。您需要创建新的内容类型来涵盖这些新的需求。由于历史原因,你必须保留原先已存在的ProductSpec 内容类型, 因为这些年来已经有很多指定了该内容类型的数据项。在这种情况下,您可以创建一个新的内容类型,ProductSpec2007, 基于已有的 ProductSpec 内容类型。然后可以将 ProductSpec2007 内容类型打包成 Feature, 并写代码在网站集中部署和激活, 将 ProductSpec2007 内容类型添加到原先 ProductSpec 内容类型添加到的每个站点和列表中。最后, 您可以写代码设置 ProductSpec 内容类型的Hidden属性为true。现在,当用户进到网站里新建一个产品规范时,就可以选择 ProductSpec2007 内容类型;ProductSpec 内容类型不会再出现在新建下拉框中。然而, ProductSpec 内容类型仍然存在于添加其的站点和列表中,指定该内容类型的列表项也仍旧存在,不会改变。

存储内容类型的更新

Windows SharePoint Services并不会把我们对内容类型的修改写回到内容类型的定义文件中。相反, Windows SharePoint Services会将更新存到Windows SharePoint Services 数据库条目中.

所有的内容类型都以 Windows SharePoint Services 数据库条目的形式存储。这是由于当我将网站内容类型添加到列表时,WSS拷贝网站内容类型为类别内容类型,存放在列表中。

注意:任何情况下都不要在已经部署并激活的情况下,修改内容类型定义文件。WSS并不会跟踪内容类型定义文件的变化。因此,也没有任何相关的方法来将这种改变推送到子内容类型。

更新密封内容类型

密封内容类型无法通过用户界面或对象模型进行修改。如果必须要更新一个密封内容类型,您必须将该内容类型的Sealed属性设为 false, 然后再进行修改。不要直接编辑内容类型定义文件。

你必须具有网站管理员权限才能设置SPContentType对象的Sealed属性。

原创粉丝点击