SharePoint 使用ECMAscript对象模型来读取帖子列表
本随笔讲述如何用JavaScript来读取SharePoint 2013 中blog相关的帖子列表。
<div id="divGetItemsFromPosts" title="读取贴子列表"></div><br />
<div id="divGetItemsFromComments" title="读取某个帖子的所有回贴"></div><br />
<script src="/_layouts/15/Learning_ECMAScript/Learning_WP_Blog.js"></script>
//读取帖子列表里的前10条帖子
//Get top 10 items from Posts List in the blog site
var collListItem;
var getItemsFromPosts = function (blogSiteUrl) {
var clientContext = new SP.ClientContext(blogSiteUrl);
var oWebsite = clientContext.get_web();
var oList = oWebsite.get_lists().getByTitle('Posts');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><Query><Where><IsNotNull><FieldRef Name=\'Title\' /></IsNotNull></Where></Query><RowLimit>10</RowLimit></View>');
collListItem = oList.getItems(camlQuery);
clientContext.load(collListItem, 'Include(Id,Title,Body,Created,Author,NumComments,LikesCount,LikedBy)');
clientContext.executeQueryAsync(getItemsFromPostsSucceeded, getItemsFromPostsFailed);
}; var getItemsFromPostsSucceeded = function () {
var itemsFromPostsHTML = '<strong>---------------Get top 10 items from Posts List in the blog site-------------</strong><br/>';
var listItemEnumerator = collListItem.getEnumerator();
var oListItem, i = 1, tempCreated;
var tempAuthor, tempNumComments, tempLikedBy, tempAuthorArr, tempNumCommentsArr, tempLikedByArr;
while (listItemEnumerator.moveNext()) {
oListItem = listItemEnumerator.get_current();
tempCreated = oListItem.get_item('Created');
tempCreated = tempCreated.getDate() + '/' + (tempCreated.getMonth() + 1) + '/' + tempCreated.getFullYear() + ' ' + tempCreated.getHours() + ':' + tempCreated.getMinutes(); tempAuthor = oListItem.get_item('Author');
tempNumComments = oListItem.get_item('NumComments');
tempLikedBy = oListItem.get_item('LikedBy');
tempAuthorArr = [];
tempNumCommentsArr = [];
tempLikedByArr = []; for (var property in tempAuthor) {
if (typeof tempAuthor[property] != 'function' && property == '$2d_1')
tempAuthorArr.push(tempAuthor[property]);
}
for (var property in tempNumComments) {
if (typeof tempNumComments[property] != 'function' && property == '$1E_1')
tempNumCommentsArr.push(tempNumComments[property]);
}
if (tempLikedBy) {
for (var property in tempLikedBy) {
if (typeof tempLikedBy[property] != 'function')
tempLikedByArr.push(tempLikedBy[property].get_lookupValue());
}
} tempNumComments = tempNumCommentsArr.join(', ');
if (tempNumComments != '0')
tempNumComments = ' <input type="button" onclick="getItemsFromComments(\'/Nigel\',' + oListItem.get_id() + ',\'' + oListItem.get_item('Title') + '\');" value="' + tempNumComments + ' Comments" />'; itemsFromPostsHTML += '<div style="margin-bottom:20px;background-color:' + (i % 2 == 1 ? '#ACC8DF' : '#CCC9BF') + '"><strong>**Top ' + i + '</strong><br/>' +
'ID: ' + oListItem.get_id() + '<br/>' +
'Title: ' + oListItem.get_item('Title') + '<br/>' +
'Body: ' + oListItem.get_item('Body') + '<br/>' +
'Created: ' + tempCreated + '<br/>' +
'Author :' + tempAuthorArr.join(', ') + '<br/>' +
'NumComments: ' + tempNumComments + '<br/>' +
'LikesCount: ' + (oListItem.get_item('LikesCount') || 0) + '<br/>' +
'LikedBy: ' + tempLikedByArr.join(', ') + '</div>';
i++;
}
document.getElementById('divGetItemsFromPosts').innerHTML = itemsFromPostsHTML;
}; var getItemsFromPostsFailed = function (sender, args) {
alert('Request failed. ' + args.get_message() + '\r\n' + args.get_stackTrace());
}; //读取某个帖子的所有回贴
//Get items from Comments List in the blog site
var collListItem2;
var currentPostTitle;
var getItemsFromComments = function (blogSiteUrl, postId, postTitle) {
var clientContext = new SP.ClientContext(blogSiteUrl);
var oWebsite = clientContext.get_web();
var oList = oWebsite.get_lists().getByTitle('Comments');
currentPostTitle = postTitle;
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'PostID\'/><Value Type=\'Lookup\'>' + postId + '</Value></Eq></Where></Query><RowLimit>10</RowLimit></View>');
collListItem2 = oList.getItems(camlQuery);
clientContext.load(collListItem2, 'Include(Id,Title,Body,Created,Author)');
clientContext.executeQueryAsync(getItemsFromCommentsSucceeded, getItemsFromCommentsFailed);
}; var getItemsFromCommentsSucceeded = function () {
var itemsFromCommentsHTML = '<strong>---------------Get items from Comments List in the blog site---------------</strong><br/>';
itemsFromCommentsHTML += '<strong>The Comments of Post ('+ currentPostTitle +')</strong><br/>';
var listItemEnumerator = collListItem2.getEnumerator();
var oListItem, i = 1, tempCreated;
var tempAuthor, tempAuthorArr;
while (listItemEnumerator.moveNext()) {
oListItem = listItemEnumerator.get_current();
tempCreated = oListItem.get_item('Created');
tempCreated = tempCreated.getDate() + '/' + (tempCreated.getMonth() + 1) + '/' + tempCreated.getFullYear() + ' ' + tempCreated.getHours() + ':' + tempCreated.getMinutes(); tempAuthor = oListItem.get_item('Author');
tempAuthorArr = []; for (var property in tempAuthor) {
if (typeof tempAuthor[property] != 'function' && property == '$2d_1')
tempAuthorArr.push(tempAuthor[property]);
} itemsFromCommentsHTML += '<div style="margin:0 20px 20px 20px;background-color:' + (i % 2 == 1 ? '#CFBCCF' : '#E4E8A4') + '"><strong>**Top ' + i + '</strong><br/>' +
'ID: ' + oListItem.get_id() + '<br/>' +
'Title: ' + oListItem.get_item('Title') + '<br/>' +
'Body: ' + oListItem.get_item('Body') + '<br/>' +
'Created: ' + tempCreated + '<br/>' +
'Author :' + tempAuthorArr.join(', ') + '</div>';
i++;
}
document.getElementById('divGetItemsFromComments').innerHTML = itemsFromCommentsHTML;
}; var getItemsFromCommentsFailed = function (sender, args) {
alert('Request failed. ' + args.get_message() + '\r\n' + args.get_stackTrace());
}; //初始化
//Init
_spBodyOnLoadFunctionNames.push('documentReady');
function documentReady() {
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {
getItemsFromPosts('/Nigel');
});
}
SharePoint 使用ECMAscript对象模型来读取帖子列表的更多相关文章
- SharePoint 使用ECMAscript对象模型来操作Goup与User
这里总结了关于使用ECMAscript对象模型来操作Goup与User的常用情况,内容如下: 1.取得当前Sharepoint网站所有的Groups 2.获取当前登录用户的Title与 ...
- 每日学习心得:SharePoint 2013 自定义列表项添加Callout菜单项、文档关注、SharePoint服务端对象模型查询
前言: 前一段时间一直都比较忙,没有什么时间进行总结,刚好节前项目上线,同时趁着放假可以好好的对之前遇到的一些问题进行总结.主要内容有使用SharePoint服务端对象模型进行查询.为SharePoi ...
- 每天的学习经验:SharePoint 2013 定义自己添加的产品清单。Callout菜单项、文档关注、SharePoint服务机端对象模型查询
前言: 前一段时间一直都比較忙.没有什么时间进行总结,刚好节前项目上线.同一时候趁着放假能够好好的对之前遇到的一些问题进行总结. 主要内容有使用SharePoint服务端对象模型进行查询.为Share ...
- [linux]解决vsftpd 读取目录列表失败的问题
使用第三方FTP软件filezilla进行登陆,出现如下错误:状态: 正在连接 192.168.1.6:21...状态: 连接建立,等待欢迎消息...响应: 220 (vsFTPd ...
- FTP软件Filezilla出现“读取目录列表失败”的解决办法
FTP软件Filezilla出现“读取目录列表失败”情况一般出现在vista/win7系统上,之前在xp上没发现这种情况. 总的来说,不论是打开FTP出现乱码或者显示“读取目录列表失败”均是由字符集引 ...
- FileZilla 错误425 Can't open data connection 读取目录列表失败
新装FileZilla FTP Server,设置好后,客户端能连接,但是出Error:[读取目录列表失败]:同时,服务端出Error:[425 Can't open data connection] ...
- 响应: 500 OOPS: priv_sock_get_int 错误: 读取目录列表失败
/************************************************************************* * 响应: 500 OOPS: priv_sock ...
- 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 /va ...
- SharePoint 2010/2013 隐藏的速度下拉菜单列表项
SharePoint 2010/2013 隐藏的速度下拉菜单列表项 有时为了防止一些用户编辑列表项.需要隐藏下拉菜单列表项.,仅仅须要添加一个内容编辑器控件,将css代码写入其HTML ...
随机推荐
- 基于jquery横向手风琴效果
基于jquery横向手风琴效果是一款基于jquery实现的左右滑动手风琴图片轮播切换特效.效果图如下: 在线预览 源码下载 效果图如下: <div class="flash&quo ...
- 纯css3开发的响应式设计动画菜单(支持ie8)
这是一个响应式设计的菜单.单击列表图标,当你显示屏大小可以完全水平放下所有菜单项时,菜单水平显示(如图1).当你的显示屏不能水平放置所有菜单项时,菜单垂直显示(如图2). 而且显示的时候是以动画的型式 ...
- java基础篇---异常处理
认识异常 异常时导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以在程序的设计中必须考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序 ...
- Android ListView的使用(三)
前两节关于ListView的,已经使用了ArrayAdapter,SimpleAdapter了,两个比较基本的适配器 这里来用一个用的最多的一个适配器BaseAdapter. 还是先上效果图.大概和微 ...
- RRDtool运用
一 建立RRD数据库(.rrd文件) $ rrdtool RRDtool Copyright - by Tobias Oetiker <tobi@oetiker.ch> Compiled ...
- Android——线程通讯类Handler(转)
原文地址:http://uule.iteye.com/blog/1705951 handler是线程通讯工具类.用于传递消息.它有两个队列:1.消息队列2.线程队列 消息队列使用sendMessage ...
- ecshop常用的一些变量
<!-- {if $smarty.session.user_rank gt 1}-->gt大于 lt小于1:ecshop模板中调用session的值 {$smarty.session.us ...
- pandas 的数据结构(Series, DataFrame)
Pandas 讲解 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标 ...
- 第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中
第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中 前面我们讲到的elasticsearch( ...
- AWT和Swing之间的基本区别
AWT和Swing之间的基本区别:AWT 是基于本地方法的C/C++程序,其运行速度比较快:Swing是基于AWT 的Java程序,其运行速度比较慢. 对于一个嵌入式应用来说,目标平台的硬件资源往往非 ...