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 ...
随机推荐
- 七牛文件上传-python
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import os from sevencow import CowException ...
- Office/Access 2013 扩展支持xbase/DBF 文件
最新的Access 2013 安装后,已经不能对dbf文件进行链接读取了,Access 2010以前的版本都可以,如果以前的项目用了Access链接大量的dbf文件的话, 升级Access 2013后 ...
- 15.01.29-MVC中用Areas分解项目
在MVC项目上右键->新建->区域(Areas)...,将会自动生成Areas文件夹,并在文件夹下创建Model+Controller+View的mvc框架.在Views文件夹中,自动生成 ...
- oozie 重新提交作业
在oozie的运行过程当中可能会出现错误,比如数据库连接不上,或者作业执行报错导致流程进入suspend或者killed状态,这个时候我们就要分析了,如果确实是数据或者是网络有问题,我们比如把问题解决 ...
- 【linux】——FTP出现500 OOPS: cannot change directory的解决方法
cannot change directory:/home/*** ftp服务器连接失败,错误提示: 500 OOPS: cannot change directory:/home/******* 5 ...
- windows10激活工具,绿色无毒,不改浏览器主页
最近发现一个很好用的Windows10 永久激活的工具,比KMS什么的管用,而且无毒无公害.几乎支持所有的win10版本.感兴趣的朋友可以试试.之前win10没洗白的同学,也试试吧,说不定就洗白了呢. ...
- 用stringr包处理字符串
<Machine Learning for Hackers>一书的合著者John Myles White近日接受了一个访谈.在访谈中他提到了自己在R中常用的几个扩展包,其中包括用ggplo ...
- C++ 结构体初始化
#include <stdio.h> int main(int argc, const char * argv[]) { //定义结构体类型 struct Person { char *n ...
- modelsim 出现此错误怎么办
笔者的电脑装成了win8的系统,然后像平常一样打开modelsim,这时跳出如下图的界面: 笔者的modelsim之前是安装过的,所以这个界面已经说明,当前的许可证没有安装好.解决上述问题的办法是重新 ...
- (笔记)Mysql命令rename:修改表名
rename命令用于修改表名. rename命令格式:rename table 原表名 to 新表名; 例如,在表MyClass名字更改为YouClass: mysql> rename t ...