zoukankan      html  css  js  c++  java
  • SharePoint 2013 APP 开发示例 (一)List 读写

    在这个示例里,我们将创建一个页面测试 SharePoint APP的权限。这个页面有二个按钮,一个从documents里读数据,一个往documents里写数据:

    1. 打开Visual Studio 2012,创建一个新的 Sharepoint 2013 app: PermissionTest,选择 Sharepoint-hosted,点击Finish
    image

    2. 打开Default.aspx :

    引入knockoutjs

    <script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js" ></script>

    加入二个按钮:

    <asp:Content ID="Content2" ContentPlaceHolderId="PlaceHolderPageTitleInTitleArea" runat="server">
       App Permission Test
    </asp:Content>
    <asp:Content ID="Content3" ContentPlaceHolderID="PlaceHolderMain" runat="server">
       <button data-bind="click: readList">Press here to read from Documents.</button>
       <br />
       <button data-bind="click: writeList">Press here to write to Documents.</button>
    </asp:Content>

    3. 打开APP.js, 加入下面js:

    /// <reference path="knockout-3.0.0.debug.js" />
    $(function () {
        ko.applyBindings(new testPermissionsViewModel());
    });
    
    function testPermissionsViewModel() {
        var self = this;
        self.result = null;
    
        self.readList = function () {
            var context = new SP.ClientContext.get_current();
            var hostWebContext = new SP.AppContextSite(context, decodeURIComponent(getQueryStringParameter("SPHostUrl")));
            self.result = hostWebContext.get_web().get_lists().getByTitle("Documents").getItems(new SP.CamlQuery.createAllItemsQuery());
            context.load(self.result);
            context.executeQueryAsync(
                Function.createDelegate(self, self.onSuccess),
                Function.createDelegate(self, self.onFail)
                );
        }
    
        self.writeList = function () {
            var context = new SP.ClientContext.get_current();
            var hostWebContext = new SP.AppContextSite(context, decodeURIComponent(getQueryStringParameter("SPHostUrl")));
            self.result = hostWebContext.get_web().get_lists().getByTitle("Documents").getItemById(1);
            self.result.set_item("Title", "My update book title");
            self.result.update();
            context.executeQueryAsync(
                Function.createDelegate(self, self.onSuccess),
                Function.createDelegate(self, self.onFail)
                );
        }
    
        self.onSuccess = function () {
            if (self.result instanceof SP.ListItemCollection) {
                if (!self.result.get_item(0)) {
                    alert("Success but no return");
                }
                else {
                    alert("Success, first title = " + self.result.get_item(0).get_item("Title"));
                }
            }
            else {
                alert("Success");
            }
        }
    
        self.onFail = function (sender, args) {
            alert("Failed: " + args.get_message());
        }
    }
    
    
    function getQueryStringParameter(paramToRetrieve) {
        var params =
        document.URL.split("?")[1].split("&");
        var strParams = "";
        for (var i = 0; i < params.length; i = i + 1) {
            var singleParam = params[i].split("=");
            if (singleParam[0] == paramToRetrieve)
                return singleParam[1];
        }
    }

    4. 打开 AppManifest.xml ,选择 Permissions tab, 创建一个权限请求,scope选择List, Permission选择Read:image

    5. 保存并发布APP, 选择Documents,点击Trust it按钮

    image

    6. 现在你能看到APP了:

    image

    7. 这时当你点击第二个按钮时,你将得到访问拒绝的信息,回到AppManifest.xml文件,把权限改为Write

    image

    8. 再保存并发布,再次点击第二个按钮,发现Success了。

    SharePoint 2013 APP 开发示例 系列

  • 相关阅读:
    将程序集从GAC中导出
    客户端访问WebService复杂参数类型的使用和参数的序列化与反序列化
    (译Workflow in the 2007 Microsoft Office System)介绍(部分)
    处理PageRequestManager事件
    测试 IPersonalizable接口
    几篇很好的文章
    交换两个数,不引入第三个变量
    Dijkstra算法
    给定一个整数,求它的二进制表示中有多少个1。
    自律
  • 原文地址:https://www.cnblogs.com/fengwenit/p/3547853.html
Copyright © 2011-2022 走看看