当开始针对SharePoint开发时,我最初并没有完全理解所有的细节。我创建了一个列表定义(用于文档库)以及相关的各种自定义操作。不幸的是,我在列表定义中使用了以下内容:
<ListTemplate...
...
Type="101"
...
并在列表中注册CustomActions:
<CustomAction...
...
RegistrationType="List"
RegistrationId="101"
...
当然,这意味着自定义操作对于激活功能的所有文档库都是可见的,这是不良行为。此外,还有许多这些文档库是根据生产中的上述列表定义创建的。
解决此问题的最佳方法是什么?我的假设是我不知何故需要更改现有列表的“类型”属性,但我不知道该怎么做。它可以通过一些直接的SQL操作来完成吗?或者有更好的方法吗?
注意:我可以看到AllLists表有一个列tp_ServerTemplate,这是正确的改变吗?
答案 0 :(得分:2)
Microsoft修改SharePoint数据库为completely unsupported。请不要在制作时执行此操作!
另一种选择是创建内容类型并将自定义操作与该关联相关联。您可能需要编写一个简单的控制台应用程序来迭代现有的文档库并添加内容类型以便可以使用。您希望自定义操作应用于的现有文档也需要更改其内容类型。
答案 1 :(得分:-4)
从一些快速的初始测试来看,看起来好像改变AllLists表就可以了。
所以要解决的步骤:
1)将列表定义类型属性更改为唯一值(例如11000)
2)将CustomAction RegistrationId属性更改为相同(11000)
3)将AllLists表中的tp_servertemplate列更新为所有相关列表的新模板Type(11000)。