我将使用VS在SPO中创建一些声明性项。我知道如何通过UI创建它,因为我想通过编程方式创建它。正如我所做的一些研究,有三种方法。首先是通过SP托管的应用程序(加载项),然后在主机网站上授予管理权限,以便在其父网站上创建一些列表。这是文章:http://www.sharepointnadeem.com/2013/12/sharepoint-2013-apps-access-data-in.html这种方法并不好,因为App web不应该对其宿主网站进行任何更改。二是通过沙盒解决方案。一旦我尝试使用SPO站点URL创建沙箱解决方案,我会收到一个错误,说无法通过VS连接到远程站点。因此,我必须输入本地SP URL才能创建沙盒解决方案。然后我应该以声明的方式创建列表模板,并将其部署并发布到我的SPO环境中。以下是解释步骤的文章:http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2012/01/10/how-to-use-visual-studio-11-to-publish-solutions-to-sharepoint-online.aspx这种方法的问题是,一旦我在本地开发机器中开发列表模板,我就无法访问位于SPO中的托管元数据列。第三种方法是在App web中创建列表或内容类型或模板,但我的情况并非如此。本文对此进行了解释:sharepoint-journey.com/sharepoint-list-in-sharepoint-hosted-app.html这里的问题是,我想在我的网站(主机网站),而不是在应用程序网站(子网站)
我的问题是:我想通过使用VS2013在我的SPO环境中提供一些列表模板。做这件事的最佳方法是什么?我该怎么做?请给我一个循序渐进的指导。
感谢
您显然想要采用应用程序(插件)的方式。在许多情况下,您可以在主机web上设置列表,然后将应用程序web用作用户界面,或者如果您根本不想使用它:只需让外接程序在创建列表、列和内容类型时承担重任。
这里重要的是,您在代码中指定希望在Host Web而不是App Web上创建列表。为此,您需要在应用程序中包含权限请求。安装后,该应用程序将询问安装它的用户是否可以访问宿主网站。这是通过在AppManifest.xml文件中设置相关的作用域来完成的,然后在Permission:[your-scope]-[Permission-level]下设置它https://msdn.microsoft.com/en-us/library/office/fp142383.aspx
然后类似这样的代码将允许您在hostweb上创建一个列表。请记住,即使您删除了应用程序,此列表仍将在主机网站上可用。
oApp.install.addList = function (listName) {
var listCreationInfo = new SP.ListCreationInformation();
listCreationInfo.set_title(listName);
listCreationInfo.set_templateType(SP.ListTemplateType.genericList);
var myNewList = hostcontext.get_web().get_lists().add(listCreationInfo);
var dfd = $.Deferred();
context.load(myNewList);
context.executeQueryAsync(function () {
var listCreated = true;
console.log("[" + listName + "]" + " added to hostweb");
if (listCreated) dfd.resolve();
}, oApp.onFail
);
return dfd.promise();
};
我还在博客上写了关于在你的列表中创建某些类型的列的文章。欢迎在这里查看:http://bayerlein.se/how-to-create-host-web-lists-with-certain-columns-in-your-sharepoint-add-in-the-nice-way/