2010-10-27 74 views
2

我有我保存为列表模板的SharePoint 2007自定义列表。我正在寻找一种方法,通过外部应用程序的Web服务调用从保存的模板创建新列表。如何通过Web服务从模板创建SharePoint 2007列表?

我已经查看了可用于SharePoint 2007的基本Web服务http://msdn.microsoft.com/en-us/library/bb862916(office.12).aspx,但调用该服务只是创建一个简单的空白自定义列表。

如何从特定模板实例化列表?如何找到模板的功能ID?

回答

2

您可以使用HTTP调试器(如fiddler2)来分析SharePoint设计器进行查找的Web服务和远程过程调用。例如,为了获得可用的列表模板,SPD使用DisplayPostRPC命令(例如,http://www.microsoft.com/technet/prodtechnol/default.mspx)发出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协议的示例请参阅this将文件上传到SharePoint文档库(它使用author.dll而不是owssvr.dll,但技术类似)。

+0

提琴手是一个很好的建议,它有助于确定我得到的真实问题。 – 2010-11-08 23:17:26

相关问题