SharePoint 使用ECMAscript对象模型来读取帖子列表

本随笔讲述如何用JavaScript来读取SharePoint 2013 中blog相关的帖子列表。

ASCX File Content:

<div id="divGetItemsFromPosts" title="读取贴子列表"></div><br />
<div id="divGetItemsFromComments" title="读取某个帖子的所有回贴"></div><br />
<script src="/_layouts/15/Learning_ECMAScript/Learning_WP_Blog.js"></script>

JS File Content(Learning_WP_Blog.js):

  1 //读取帖子列表里的前10条帖子
  2 //Get top 10 items from Posts List in the blog site
  3 var collListItem;
  4 var getItemsFromPosts = function (blogSiteUrl) {
  5     var clientContext = new SP.ClientContext(blogSiteUrl);
  6     var oWebsite = clientContext.get_web();
  7     var oList = oWebsite.get_lists().getByTitle(‘Posts‘);
  8     var camlQuery = new SP.CamlQuery();
  9     camlQuery.set_viewXml(‘<View><Query><Where><IsNotNull><FieldRef Name=\‘Title\‘ /></IsNotNull></Where></Query><RowLimit>10</RowLimit></View>‘);
 10     collListItem = oList.getItems(camlQuery);
 11     clientContext.load(collListItem, ‘Include(Id,Title,Body,Created,Author,NumComments,LikesCount,LikedBy)‘);
 12     clientContext.executeQueryAsync(getItemsFromPostsSucceeded, getItemsFromPostsFailed);
 13 };
 14
 15 var getItemsFromPostsSucceeded = function () {
 16     var itemsFromPostsHTML = ‘<strong>---------------Get top 10 items from Posts List in the blog site-------------</strong><br/>‘;
 17     var listItemEnumerator = collListItem.getEnumerator();
 18     var oListItem, i = 1, tempCreated;
 19     var tempAuthor, tempNumComments, tempLikedBy, tempAuthorArr, tempNumCommentsArr, tempLikedByArr;
 20     while (listItemEnumerator.moveNext()) {
 21         oListItem = listItemEnumerator.get_current();
 22         tempCreated = oListItem.get_item(‘Created‘);
 23         tempCreated = tempCreated.getDate() + ‘/‘ + (tempCreated.getMonth() + 1) + ‘/‘ + tempCreated.getFullYear() + ‘ ‘ + tempCreated.getHours() + ‘:‘ + tempCreated.getMinutes();
 24
 25         tempAuthor = oListItem.get_item(‘Author‘);
 26         tempNumComments = oListItem.get_item(‘NumComments‘);
 27         tempLikedBy = oListItem.get_item(‘LikedBy‘);
 28         tempAuthorArr = [];
 29         tempNumCommentsArr = [];
 30         tempLikedByArr = [];
 31
 32         for (var property in tempAuthor) {
 33             if (typeof tempAuthor[property] != ‘function‘ && property == ‘$2d_1‘)
 34                 tempAuthorArr.push(tempAuthor[property]);
 35         }
 36         for (var property in tempNumComments) {
 37             if (typeof tempNumComments[property] != ‘function‘ && property == ‘$1E_1‘)
 38                 tempNumCommentsArr.push(tempNumComments[property]);
 39         }
 40         if (tempLikedBy) {
 41             for (var property in tempLikedBy) {
 42                 if (typeof tempLikedBy[property] != ‘function‘)
 43                     tempLikedByArr.push(tempLikedBy[property].get_lookupValue());
 44             }
 45         }
 46
 47         tempNumComments = tempNumCommentsArr.join(‘, ‘);
 48         if (tempNumComments != ‘0‘)
 49             tempNumComments = ‘&nbsp;&nbsp;<input type="button" onclick="getItemsFromComments(\‘/Nigel\‘,‘ + oListItem.get_id() + ‘,\‘‘ + oListItem.get_item(‘Title‘) + ‘\‘);" value="‘ + tempNumComments + ‘ Comments" />‘;
 50
 51         itemsFromPostsHTML += ‘<div style="margin-bottom:20px;background-color:‘ + (i % 2 == 1 ? ‘#ACC8DF‘ : ‘#CCC9BF‘) + ‘"><strong>**Top ‘ + i + ‘</strong><br/>‘ +
 52             ‘ID: ‘ + oListItem.get_id() + ‘<br/>‘ +
 53             ‘Title: ‘ + oListItem.get_item(‘Title‘) + ‘<br/>‘ +
 54             ‘Body: ‘ + oListItem.get_item(‘Body‘) + ‘<br/>‘ +
 55             ‘Created: ‘ + tempCreated + ‘<br/>‘ +
 56             ‘Author :‘ + tempAuthorArr.join(‘, ‘) + ‘<br/>‘ +
 57             ‘NumComments: ‘ + tempNumComments + ‘<br/>‘ +
 58             ‘LikesCount: ‘ + (oListItem.get_item(‘LikesCount‘) || 0) + ‘<br/>‘ +
 59              ‘LikedBy: ‘ + tempLikedByArr.join(‘, ‘) + ‘</div>‘;
 60         i++;
 61     }
 62     document.getElementById(‘divGetItemsFromPosts‘).innerHTML = itemsFromPostsHTML;
 63 };
 64
 65 var getItemsFromPostsFailed = function (sender, args) {
 66     alert(‘Request failed. ‘ + args.get_message() + ‘\r\n‘ + args.get_stackTrace());
 67 };
 68
 69 //读取某个帖子的所有回贴
 70 //Get items from Comments List in the blog site
 71 var collListItem2;
 72 var currentPostTitle;
 73 var getItemsFromComments = function (blogSiteUrl, postId, postTitle) {
 74     var clientContext = new SP.ClientContext(blogSiteUrl);
 75     var oWebsite = clientContext.get_web();
 76     var oList = oWebsite.get_lists().getByTitle(‘Comments‘);
 77     currentPostTitle = postTitle;
 78     var camlQuery = new SP.CamlQuery();
 79     camlQuery.set_viewXml(‘<View><Query><Where><Eq><FieldRef Name=\‘PostID\‘/><Value Type=\‘Lookup\‘>‘ + postId + ‘</Value></Eq></Where></Query><RowLimit>10</RowLimit></View>‘);
 80     collListItem2 = oList.getItems(camlQuery);
 81     clientContext.load(collListItem2, ‘Include(Id,Title,Body,Created,Author)‘);
 82     clientContext.executeQueryAsync(getItemsFromCommentsSucceeded, getItemsFromCommentsFailed);
 83 };
 84
 85 var getItemsFromCommentsSucceeded = function () {
 86     var itemsFromCommentsHTML = ‘<strong>---------------Get items from Comments List in the blog site---------------</strong><br/>‘;
 87     itemsFromCommentsHTML += ‘<strong>The Comments of Post (‘+ currentPostTitle +‘)</strong><br/>‘;
 88     var listItemEnumerator = collListItem2.getEnumerator();
 89     var oListItem, i = 1, tempCreated;
 90     var tempAuthor, tempAuthorArr;
 91     while (listItemEnumerator.moveNext()) {
 92         oListItem = listItemEnumerator.get_current();
 93         tempCreated = oListItem.get_item(‘Created‘);
 94         tempCreated = tempCreated.getDate() + ‘/‘ + (tempCreated.getMonth() + 1) + ‘/‘ + tempCreated.getFullYear() + ‘ ‘ + tempCreated.getHours() + ‘:‘ + tempCreated.getMinutes();
 95
 96         tempAuthor = oListItem.get_item(‘Author‘);
 97         tempAuthorArr = [];
 98
 99         for (var property in tempAuthor) {
100             if (typeof tempAuthor[property] != ‘function‘ && property == ‘$2d_1‘)
101                 tempAuthorArr.push(tempAuthor[property]);
102         }
103
104         itemsFromCommentsHTML += ‘<div style="margin:0 20px 20px 20px;background-color:‘ + (i % 2 == 1 ? ‘#CFBCCF‘ : ‘#E4E8A4‘) + ‘"><strong>**Top ‘ + i + ‘</strong><br/>‘ +
105             ‘ID: ‘ + oListItem.get_id() + ‘<br/>‘ +
106             ‘Title: ‘ + oListItem.get_item(‘Title‘) + ‘<br/>‘ +
107             ‘Body: ‘ + oListItem.get_item(‘Body‘) + ‘<br/>‘ +
108             ‘Created: ‘ + tempCreated + ‘<br/>‘ +
109             ‘Author :‘ + tempAuthorArr.join(‘, ‘) + ‘</div>‘;
110         i++;
111     }
112     document.getElementById(‘divGetItemsFromComments‘).innerHTML = itemsFromCommentsHTML;
113 };
114
115 var getItemsFromCommentsFailed = function (sender, args) {
116     alert(‘Request failed. ‘ + args.get_message() + ‘\r\n‘ + args.get_stackTrace());
117 };
118
119 //初始化
120 //Init
121 _spBodyOnLoadFunctionNames.push(‘documentReady‘);
122 function documentReady() {
123     SP.SOD.executeFunc(‘sp.js‘, ‘SP.ClientContext‘, function () {
124         getItemsFromPosts(‘/Nigel‘);
125     });
126 }

效果:

时间: 2024-10-23 18:33:12

SharePoint 使用ECMAscript对象模型来读取帖子列表的相关文章

SharePoint 使用ECMAscript对象模型来操作Goup与User

这里总结了关于使用ECMAscript对象模型来操作Goup与User的常用情况,内容如下:     1.取得当前Sharepoint网站所有的Groups     2.获取当前登录用户的Title与所属Group     3.获取指定Group下的所有Users     4.获取所有的Groups的所有Users的特定信息 5. 向指定Group中添加指定User     6. 判断当前登录用户是否有EditPermission权限     7.判断当前登录用户是否在某特定的Group中 AS

每日学习心得:SharePoint 2013 自定义列表项添加Callout菜单项、文档关注、SharePoint服务端对象模型查询

前言: 前一段时间一直都比较忙,没有什么时间进行总结,刚好节前项目上线,同时趁着放假可以好好的对之前遇到的一些问题进行总结.主要内容有使用SharePoint服务端对象模型进行查询.为SharePoint 自定义列表项添加callout菜单.希望能够给大家带来一些帮助. 1.  在aspx页引用可视化Web部件 有时候会需要在页面中引用项目中创建的可视化Web部件,具体步骤有以下这几步: 1) 在aspx页面顶部注册该可视化Web部件 示例如下: <%@ Register Tagprefix=&qu

SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式)

SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式) 分类: SharePoint2011-12-22 15:13 1974人阅读 评论(2) 收藏 举报 sharepointcss2010classbordernull SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式) 注:此实例无需添加数据控件,避免了一些繁琐的代码 实现效果如下: 读取数据和图片,并

每天的学习经验:SharePoint 2013 定义自己添加的产品清单。Callout菜单项、文档关注、SharePoint服务机端对象模型查询

前言: 前一段时间一直都比較忙.没有什么时间进行总结,刚好节前项目上线.同一时候趁着放假能够好好的对之前遇到的一些问题进行总结. 主要内容有使用SharePoint服务端对象模型进行查询.为SharePoint 自己定义列表项加入callout菜单.希望能够给大家带来一些帮助. 1.  在aspx页引用可视化Web部件 有时候会须要在页面中引用项目中创建的可视化Web部件,详细步骤有下面这几步: 1) 在aspx页面顶部注冊该可视化Web部件 示比例如以下: <%@ Register Tagpr

FileZilla MLSD错误:连接超时、读取目录列表失败

昨天更换完主机后,用FileZilla ftp客户端连接ftp服务器,出现以下错误: 命令: MLSD错误: 连接超时错误: 读取目录列表失败 于是网上百度了一下,找到两种解决方法. 1. 将filezilla的模式更改成主动模式(PORT Mode) 原理(网上复制的)FTP协议的数据传输存在两种模式:主动模式(PORT Mode)和被动模式(Passive Mode).这两种模式发起连接的方向截然相反,主动模式是从服务器端向 客户端发起:被动模式是客户端向服务器端发起连接.是否采取被动模式取

Ubuntu 16.04错误:正在读取软件包列表... 有错误! E: Encountered a section with no Package: header E: Problem with MergeList /var/lib/apt/lists/ppa.launchpad.net_t-tujikawa_ppa_ubuntu_dists_xenial_main_i18n_Translatio

错误: 正在读取软件包列表... 有错误! E: Encountered a section with no Package: header E: Problem with MergeList /var/lib/apt/lists/ppa.launchpad.net_t-tujikawa_ppa_ubuntu_dists_xenial_main_i18n_Translation-en E: 无法解析或打开软件包的列表或是状态文件. 解决方法: 1.删除上面提示的PPA源,再找到新的源添加.比如直

pureftp 读取目录列表失败解决办法

最近在使用pureftp的时候遇到了文件目录无法读取或者读取很慢的问题,同时服务器上配置了iptables防火墙规则,问题主要由此引起. 解决方法如下: 1.首先查看是否开启了20.21端口,如果没有请开启. 2.停止iptables:service iptables stop,再次连接,可以成功读取列表. 3.修改iptables-config配置文件: 打开:vim /etc/sysconfig/iptables-config 将IPTABLES_MODULES修改为:IPTABLES_MO

SharePoint 2010/2013 隐藏的速度下拉菜单列表项

SharePoint 2010/2013 隐藏的速度下拉菜单列表项 有时为了防止一些用户编辑列表项.需要隐藏下拉菜单列表项.,仅仅须要添加一个内容编辑器控件,将css代码写入其HTML源就可以. 改动前: 改动后: CSS代码: <style type="text/css"> .s4-ctx{ display:none; } </style> 假设你使用的SP2013,这里的类须要更改. <style type="text/css"&g

[打印管理器]读取样式列表失败:Invalid variant operation

报错: (1)读取样式列表失败:Invalid variant operation (2)保存模板时出错原因: (1)样式文件RPDB.mdb损坏 (2)dao360.dll未注册成功,或需要在特殊路径下注册,大多是xp sp3系统或者电脑安装版的操作系统(裁剪版) 解决办法:  (1)备份打印管理器print文件夹,用不报错的样式文件替换后查看,如果替换后不报错则之前的样式文件损坏:在安装access数据库的电脑,打开样式文件RPDB.mdb进行修复 工具->数据库实用工具->压缩和修复数据