1

我将使用 VS 在 SPO 中创建一些声明性项目。我想以编程方式创建,我知道如何通过 UI 创建它。当我做了一些研究时,有3种方法。首先是通过 SP 托管的应用程序(加载项),然后在主机 Web 上授予管理权限,以在其父站点上创建一些列表。这是文章:http ://www.sharepointnadeem.com/2013/12/sharepoint-2013-apps-access-data-in.html 这种方法不好,因为 App web 不应在其主机 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-共享点在线.aspx 这种方法的问题是,一旦我在本地开发机器中开发列表模板,我就无法访问位于 SPO 中的托管元数据列。第三种方法是在 App web 中创建列表或内容类型或模板,这不是我的情况。这已在本文中进行了解释:sharepoint-journey.com/sharepoint-list-in-sharepoint-hosted-app.html 这里的问题是,我希望在我的网站(主机网站)中而不是在 App 网站中拥有该模板(子网站)

我的问题是:我想通过使用 VS 2013 在我的 SPO 环境中提供一些列表模板。这样做的最佳方法是什么?我该怎么做?请给我一步一步的指导。

谢谢

4

1 回答 1

2

您肯定想采用 App(Add-in) 方式。可以并且在许多情况下更喜欢在主机 Web 上设置您的列表,然后将应用程序 Web 用于用户界面,或者如果您根本不想使用它:只需让加载项执行创建列表、列和内容类型的繁重工作。

这里重要的是您在代码中指定您希望在主机 Web 而不是应用程序 Web 上创建列表。为此,您需要在您的应用程序中包含权限请求。安装后,该应用程序将询问安装它的用户是否可以访问主机网络。这是通过在 AppManifest.xml 文件中设置相关范围来完成的,然后在权限下进行设置:[您的范围] - [权限级别] 您可以在此资源中阅读更多相关信息: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/

于 2015-11-04T07:49:18.353 回答