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 ...
随机推荐
- Eigen教程(1)
整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html 简介 Eigen是C++中可以用来调用并进行矩阵计算的一个库,简单了说它就是一个c+ ...
- Cpu表现出正弦曲线
#include <windows.h> #include <math.h> int main(void) { SetThreadAffinityMask(GetCurrent ...
- 【转】Ext.Window动态修改html
原文地址:http://www.codeweblog.com/ext-window%E5%8A%A8%E6%80%81%E4%BF%AE%E6%94%B9html/ Ext.Window动态修改htm ...
- [转]JSTL 与 JSP 或者 Java 相互传递变量的代码
原文地址:http://blog.csdn.net/joyous/article/details/6689861 两种方式 <c:set var="s1" value=&qu ...
- How Not to Crash #6: Properties and Accessors(属性,存储器方法使问题)
How Not to Crash #6: Properties and Accessorshtml, body {overflow-x: initial !important;}html { font ...
- C语言 · 扶老奶奶过街
算法提高 扶老奶奶过街 时间限制:1.0s 内存限制:256.0MB 一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我 ...
- Javascript类型转换的规则
Javascript的变量是松散类型的,它可以存储Javascript支持的任何数据类型,其变量的类型可以在运行时被动态改变.请看示例: 1 2 3 var n = 10; n = "hel ...
- bower failed: UNABLE_TO_VERIFY_LEAF_SIGNATURE
.bowerrc配置 { "strict-ssl": false }
- Customize WCF Envelope and Namespace Prefix
转自:http://vanacosmin.ro/Articles/Read/WCFEnvelopeNamespacePrefix Posted on January 8th 2014 by Vana ...
- Sencha Touch 2.3 自定义主题皮肤,颜色
写博客园越来越懒了,只写重点部分,不明白的可以Q我. 1.当你通过Cmd生成项目之后,App\resources\sass就是我们的样式源文件 2.想自定义自己的样式分为两种方式 扩展:这个是基于st ...