以编程方式在Sharepoint中实例化Web部件页面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以编程方式在Sharepoint中实例化Web部件页面相关的知识,希望对你有一定的参考价值。
有没有一种简单的方法可以使用对象模型或Web服务以编程方式将Web部件页面添加到Sharepoint站点?以这种方式创建列表和添加Web部件似乎很简单,但我找不到如何创建内容页面的示例。
编辑:对于普通的WSS安装(不是MOSS)。
我将采取这个不是协作/发布网站的路线,因为没有提及,而且wss在标签列表中。与使用发布网站相比,相当笨重......
首先选择您要使用的Web部件页面模板:
C: Program Files Common Files Microsoft Shared web server extensions 12 TEMPLATE 1033 STS DOCTEMP SMARTPGS
然后设置一个流到模板,并使用SPFileCollection.Add()将其添加到您的文档库。例如:
string newFilename = "newpage.aspx";
string templateFilename = "spstd1.aspx";
string hive = SPUtility.GetGenericSetupPath("TEMPLATE\1033\STS\DOCTEMP\SMARTPGS\");
FileStream stream = new FileStream(hive + templateFilename, FileMode.Open);
using (SPSite site = new SPSite("http://sharepoint"))
using (SPWeb web = site.OpenWeb())
{
SPFolder libraryFolder = web.GetFolder("Document Library");
SPFileCollection files = libraryFolder.Files;
SPFile newFile = files.Add(newFilename, stream);
}
注意:此解决方案假定您安装了使用1033语言代码的美国SharePoint版本。如果不同,只需改变路径。
它是一个合作/发布网站吗?如果是这样,您可以在以下博客文章中提供帮助:
- Create and Publish web pages in Publishing SharePoint sites programmatically
- Programmatically create pages - and Add Web Parts
- Programmatically adding pages to a MOSS Publishing site
@AlexAngas接受的答案的另一种解决方案是使用NewWebPage method的SharePoint Foundation RPC Protocol,如here所建议的那样。
private static void CreateWebPartPage(this SPWeb web, SPList list, string pageName, int layoutTemplate)
{
const string newWPPage = "<?xml version="1.0" encoding="UTF-8"?>" +
"<Batch>" +
"<Method ID="0,NewWebPage">" +
"<SetList Scope="Request">{0}</SetList>" +
"<SetVar Name="Cmd">NewWebPage</SetVar>" +
"<SetVar Name="ID">New</SetVar>" +
"<SetVar Name="Type">WebPartPage</SetVar>" +
"<SetVar Name="WebPartPageTemplate">{2}</SetVar>" +
"<SetVar Name="Overwrite">true</SetVar>" +
"<SetVar Name="Title">{1}</SetVar>" +
"</Method>" +
"</Batch>";
var newWPPageBatchXml = string.Format(newWPPage, list.ID, pageName, layoutTemplate);
var result = web.ProcessBatchData(newWPPageBatchXml);
}
使用上述扩展方法:
web.CreateWebPartPage(yourList, "NewPage", 2);
以上是关于以编程方式在Sharepoint中实例化Web部件页面的主要内容,如果未能解决你的问题,请参考以下文章
这是以编程方式替换 SharePoint 页面上的内容的明智方法吗?
以编程方式(但不是以声明方式)实例化小部件时出现 Dojo 重复 ID 错误
将自定义 Web 部件添加到页面 SharePoint 2013 c# csom
ASP.NET 按钮不呈现 ID - Sharepoint Web 部件