我有一个SharePoint 2007自定义列表,我已将其保存为列表模板。我正在寻找一种通过外部应用程序的Web服务调用从保存的模板创建新列表的方法。
我已经查看了可用于SharePoint 2007 http://msdn.microsoft.com/en-us/library/bb862916(office.12).aspx的基本Web服务,但调用它只会创建一个简单的空自定义列表。
如何从特定模板实例化列表?如何找到模板的功能ID?
答案 0 :(得分:2)
您可以使用HTTP调试器(如fiddler2)来分析SharePoint Designer为查找此内容而进行的Web服务和远程过程调用。
例如,要获取可用的列表模板,SPD使用DisplayPost RPC命令发出HTTP请求,例如
POST http://[server]/[web]/_vti_bin/owssvr.dll?Cmd=DisplayPost
xml有效负载:
<?xml version="1.0" encoding="UTF-8"?> <ows:Batch OnError="Return" Version="12.0.0.000"> <Method ID="0,GetProjSchema"> <SetVar Name="Cmd">GetProjSchema</SetVar> </Method> </ows:Batch>然后,
SPD会解析响应中的ListTemplates节点,以获取模板名称,类型和功能ID的列表。
要从特定模板类型或功能ID创建列表,SPD使用相同的DisplayPost命令,这次使用的消息体类似于:
<?xml version="1.0" encoding="UTF-8"?> <ows:Batch OnError="Return" Version="12.0.0.000"> <Method ID="0,NewList"> <SetVar Name="Cmd">NewList</SetVar> <SetVar Name="ListTemplate">108</SetVar> <SetVar Name="Title">Discussion Board</SetVar> <SetVar Name="FeatureId">00bfea716a4943fab535d15c05500108</SetVar> <SetVar Name="RootFolder" /> <SetVar Name="LangID">1033</SetVar> </Method> </ows:Batch>
有关如何使用RPC协议的示例,请参阅有关将文件上载到SharePoint文档库的this帖子(它使用author.dll而不是owssvr.dll,但技术类似)。< / p>