SharePoint 2013 APP 开发示例 (一)List 读写
2023-09-11 14:19:00 时间
在这个示例里,我们将创建一个页面测试 SharePoint APP的权限。这个页面有二个按钮,一个从documents里读数据,一个往documents里写数据:
1. 打开Visual Studio 2012,创建一个新的 Sharepoint 2013 app: PermissionTest,选择 Sharepoint-hosted,点击Finish
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:
5. 保存并发布APP, 选择Documents,点击Trust it按钮
6. 现在你能看到APP了:
7. 这时当你点击第二个按钮时,你将得到访问拒绝的信息,回到AppManifest.xml文件,把权限改为Write
8. 再保存并发布,再次点击第二个按钮,发现Success了。
相关文章
- 先说好,千万别用这个 App 做坏事
- APP的编译和反编译
- 工作总结 用, 隔开数据 后台不可以用 List<string> 接收 get请求直接通过浏览器发请求传数组或者list到后台
- Google Earth Engine APP——在线计算23类植被指数app代码
- create-react-app 引入 antd 及 解决 antd 样式无法显示的bug
- uni-app - 电子签字板组件(签名专用写字画板,支持调整写字板 “横纵“ 方向,可调整线条粗细颜色等,Canvas 绘制非常丝滑流畅)完美兼容 H5 APP 小程序,最好用的画板签字教程插件源码
- uni-app - 日历选择器组件(支持日期 “范围选择“ 多选 / 支持单选日期 / 自定义默认选中时间 / 弹框式 / 支持农历 )完美兼容 H5 APP 小程序,最好用的教程完整源代码插件!
- uni-app - 实现多选功能,点击项目时选中并高亮显示(支持全选 / 反选,以及轻松的 “回显“ 数据)点击选中并改变样式,全端兼容 H5 App 小程序,代码高效简洁无 BUG
- uni-app - App 平台内嵌网页物理手机自带返回键失效解决方案(内嵌的 webview 网页 H5 打包后手机物理返回键无效直接退出应用了)
- uni-app - APP平台禁止页面滑动(无法上下滚动屏幕页面)
- uni-app 日历组件的实现
- 如何高效的阅读uni-app框架?(建议收藏)
- create-react-app利用craco配置路径别名、Less
- 《Axure RP8 网站和APP原型制作 从入门到精通》一1.3 总结
- SwiftUI中如何使用App Tracking Transparency Framework
- macOS SwiftUI 技巧之图片文件拖拽到app并显示(教程含源码)
- 为什么java里面经常作List判断的时候,既要判断list不为null,又要判断size>0呢?
- 分分钟解决iOS开发中App启动广告的功能
- AppStore上传已经开发好的App的方法
- linq 把list分组为 List<List>
- Android 下载App