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 ...
随机推荐
- 基于jq流畅度非常好的图片左右切换焦点图
今天给大家分享一款基于jq流畅度非常好的图片左右切换焦点图.这是一款基于jQuery实现的支持鼠标拖动切换jQuery特效下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: &l ...
- ajaxfileupload.js ajax上传文件(含application/json)
jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' ...
- Selenium (2) —— Selenium WebDriver + Grid2(101 Tutorial)
Selenium (2) -- Selenium WebDriver + Grid2(101 Tutorial) jvm版本: 1.8.0_65 selenium版本: v2.48.0 (Standa ...
- [算法]谷歌笔试题:Beautiful Numbers
题目描述 思路 这道题就是在说,由多个1组成的数是beautiful的,现在想求出r进制中的r,使得给出的数字转换成r进制,得到beautiful的数字,如果有多种方式转换,那么取1的个数最多的那种情 ...
- 妙用CTE,一条语句实现sql递归查询,SQLServer 递归
数据库设计中经常碰到父子节点的关系结构,经常需要找到某个节点的根,或者某个节点的所有子节点,一般做法都是在业务层做递归的方式实现,或者数据库存储过程实现.但其实SQLServer提供的CTE可以很好的 ...
- 数据採集之Web端上传文件到Hadoop HDFS
前言 近期在公司接到一个任务.是关于数据採集方面的. 需求主要有3个: 通过web端上传文件到HDFS; 通过日志採集的方式导入到HDFS; 将数据库DB的表数据导入到HDFS. 正好近期都有在这方面 ...
- Hibernate注解方式一对多自关联关系映射
MySQL版数据库表结构 DROP TABLE IF EXISTS SYS_DICT_ITEM; CREATE TABLE SYS_DICT_ITEM( ITEM_CODE ) NOT NULL, ...
- 自己用过的一些比较有用的css3新属性
css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开始慢慢的去了解并使用css3(还有html5),因为我觉得这是一种趋势,它是一种已经被制定的标准.我并不 ...
- 电源PI相关知识讲解
电源层与地线层的谐振控制 一旦PCB的电源与地层的形状.距离以及中间介质定下来以后,发生谐振的频率也就定下来了. 采用LC等效电路,不考虑PCB上的损耗,而这些损耗往往在高频影响尤为明显,例如趋肤效应 ...
- PHP递归算法的简单实例
递归函数为自调用函数,在函数体内直接或直接自个调用自个,但需求设置自调用的条件,若满意条件,则调用函数自身,若不满意则停止本函数的自调用,然后把目前流程的主控权交回给上一层函数来履行,也许这么给我们解 ...