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 ...
随机推荐
- Win8常用快捷键
Windows 8中常用的快捷键 Windows 键 可在开始屏幕主菜单及最后一个应用程序间循环切换 Windows 键 + C 打开“超级按钮” Windows 键 + I 打开当前程序的“设置”菜 ...
- 基于jQuery Tooltips悬停提示效果
基于jQuery Tooltips悬停提示效果.这是一款基于jquery.tooltipster插件实现的jQuery Tooltips Hover effect特效.效果图如下: 在线预览 源码 ...
- Thinkphp动态切换主题
'DEFAULT_THEME' => '2014', 'TMPL_DETECT_THEME' => true, // 自动侦测模板主题 'THEME_LIST' => '2012,2 ...
- C语言 · LOG大侠
标题:LOG大侠 atm参加了速算训练班,经过刻苦修炼,对以2为底的对数算得飞快,人称Log大侠. 一天,Log大侠的好友 drd 有一些整数序列需要变换,Log大侠正好施展法力... 变换的规则是: ...
- MyEclipse Maven Tomcat
http://bbs.csdn.net/topics/390098011
- 在Word 2007中添加参考文献及其引用的方法
以前写文章的时候忽略了在文章中添加参考文献及其引用的方式,文章各式显得不太正式,在网上进行了相关搜索,将方法整理如下: 1.将光标停留在需要插入文献的地方[1],选择菜单栏上的"引用 -&g ...
- SQL SERVER 事务和锁
内容皆整理自网络 一.事务 作者:郭无心链接:https://www.zhihu.com/question/31346392/answer/59815366来源:知乎著作权归作者所有.商业转载请联系作 ...
- android开发(32) android 中 actionbar 常用方法。设置标题,隐藏图标等
设置标题: actionBar.setTitle("关于我们"); 使返回箭头出现 actionBar.setDisplayHomeAsUpEnabled(true); 监听返回按 ...
- linq操作符:分组操作符
分组是根据一个特定的值将序列中的元素进行分组.LINQ只包含一个分组操作符:GroupBy.GroupBy操作符类似于T-SQL语言中的Group By语句.来看看GroupBy的方法定义: publ ...
- 自然语言交流系统 phxnet团队 创新实训 项目博客 (十)
关于本项目中使用到的庖丁分词的总结: Paoding 详细介绍 庖丁中文分词库是一个使用Java开发的,可结合到Lucene应用中的,为互联网.企业内部网使用的中文搜索引擎分词组件.Paodi ...