【问题标题】:Change document library "Type" after it has been created from list definition从列表定义创建后更改文档库“类型”
【发布时间】:2009-07-23 09:34:42
【问题描述】:

开始针对 SharePoint 进行开发时,我最初并没有完全理解所有细节。我创建了一个列表定义(用于文档库)并将各种自定义操作关联到它。不幸的是,我对列表定义本身使用了以下内容:

<ListTemplate...
...
Type="101"
...

并针对列表注册 CustomActions:

<CustomAction...
...
RegistrationType="List"
RegistrationId="101"
...

当然,这意味着自定义操作对于激活该功能的所有文档库都是可见的,这是不受欢迎的行为。此外,还有很多这些文档库是根据上述列表定义在生产环境中创建的。

解决此问题的最佳方法是什么?我的假设是我需要以某种方式更改现有列表的“类型”属性,但我不知道该怎么做。也许可以通过一些直接的 SQL 操作来完成?还是有更好的办法?

注意:我可以看到 AllLists 表有一个列 tp_ServerTemplate,这是正确的更改吗?

【问题讨论】:

    标签: sharepoint wss list-definition


    【解决方案1】:

    修改 SharePoint 数据库的是 Microsoft 的 completely unsupported。请不要在生产环境中这样做

    另一种选择是创建一个内容类型并将自定义操作与之关联。您可能需要编写一个简单的控制台应用程序来遍历您现有的文档库并添加内容类型以供使用。您希望应用自定义操作的现有文档也需要更改其内容类型。

    【讨论】:

      【解决方案2】:

      从一些快速的初始测试来看,更改 AllLists 表确实可以解决问题。

      那么解决步骤:

      1) 将列表定义类型属性更改为唯一值(例如 11000)

      2) 将 CustomAction RegistrationId 属性更改为相同 (11000)

      3) 将 AllLists 表中的 tp_servertemplate 列更新为所有相关列表的新模板类型 (11000)。

      【讨论】:

      • 坏主意。也许这次它对你有所帮助,但你将来可能会被烧毁。
      猜你喜欢
      • 2011-01-27
      • 1970-01-01
      • 2011-02-24
      • 2016-12-03
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多