/**分页js插件
var ListPager = new listPaging();
先调用start方法加载上下文
然后调用dataLoad方法查询第一页数据
需要设置几个属性值
ListPager.property.pageSize = 4;
ListPager.start();
ListPager.property.prevControlID = "prevBtn";//上一页按钮id
ListPager.property.nextControlID = "nextBtn";//下一页按钮id
ListPager.property.controlActionType = "css";//操作类型attr为禁用 css为显示隐藏
然后在success这个成功回调的函数中设置上一页的状态
var id = ListPager.property.listItems.itemAt(0).get_id();
ListPager.property.PagingState = ["p_ID=" + id];
p_ID是必填项。否则无法返回上一页
如果查询的数据 需要排序需要在PagingState的数组中添加你的排序字段
例如:var title = ListPager.property.listItems.itemAt(0).get_item("Title");
ListPager.property.PagingState = ["p_ID=" + id,"p_Title="+title];
如果排序字段为时间类型,比如2013-01-01 请转成20130101
分页方法调用:ListPager.getListPager
*/
var listPaging = function () { };
listPaging.prototype={
property: {
clientContext:null,
webSite : null,
siteUrl:"",
listItems : null,
query : null,
targetList : null,
position : null,
lastState : null,
pageState : "",
itemIndex : 1,
pageIndex : 1,
pageSize : 15,
prevControlID : "",
nextControlID : "",
PagingState:null,//Array 格式 ["key=value","key1=value1"],value 为时间格式的话,比如2013-01-01 请转成20130101
/* @ControlActionType: 分页操作控件启用和禁用的方式css/attr。*/
controlActionType : "css"
},
start:function(){
this.property.clientContext = new SP.ClientContext.get_current();
this.property.webSite = this.property.clientContext.get_web();
},
/*加载列表数据*/
/**
* @listName: 列表名称。
* @camlQuery: Caml语句
* @isUserList: 是不是用户列表true/false
* @success: 成功执行方法。
* @error: 失败执行方法
*/
dataLoad: function (listName, camlQuery, isUserList,success, error) {
this.property.pageIndex = 1;
this.property.pageState = "";
if (isUserList)
this.property.targetList = this.property.webSite.get_siteUserInfoList();
else
this.property.targetList = this.property.webSite.get_lists().getByTitle(listName);
this.property.query = new SP.CamlQuery();
this.property.query.set_viewXml(camlQuery);
this.property.listItems = this.property.targetList.getItems(this.property.query);
this.property.clientContext.load(this.property.listItems);
this.property.clientContext.executeQueryAsync(Function.createDelegate(this, success), Function.createDelegate(this, error));
},
getListPager:function (result, camlQuery, success, error) {
this.property.pageState = result;
this.property.lastState = this.property.position;//保存当前页的状态
if (this.property.pageState == "prev") {//上一页
this.property.itemIndex = this.property.itemIndex - (this.property.listItems.get_count() + this.property.pageSize);
if (this.property.position == null) {
this.property.position = new SP.ListItemCollectionPosition();
}
var prevPageString = this.property.position.get_pagingInfo();
var prevString = "PagedPrev=TRUE";
var searchStr = prevPageString.split("&");
for (var i = 0; i < searchStr.length; i++) {
var key = searchStr[i].split("=")[0];
var value = searchStr[i].split("=")[1];
for (var p = 0; p < this.property.PagingState.length; p++) {
var state = this.property.PagingState[p].split("=");
if (key == state[0]) {
value = state[1];
}
}
prevString += "&"+key+"="+value;
}
this.property.position.set_pagingInfo(prevString);//设置上一页读取状态
this.property.pageIndex--;
if (this.property.pageIndex == 1) {//如果到第一页,上一页禁用
//删除下一页的禁用状态
if (this.property.controlActionType == "css") {
$("#" + this.property.prevControlID).css("display", "none");
$("#" + this.property.nextControlID).css("display", "block");
}
if (this.property.controlActionType == "attr") {
$("#" + this.property.nextControlID).removeAttr("disabled");
$("#" + this.property.prevControlID).attr("disabled", "disabled");
}
}
else {
if (this.property.controlActionType == "css") {
$("#" + this.property.nextControlID).css("display", "block");
}
if (this.property.controlActionType == "attr") {
$("#" + this.property.nextControlID).removeAttr("disabled");
}
}
}
else {//下一页
if (this.property.position == null)
this.property.position = this.property.lastState;//赋值上一页状态
if (this.property.controlActionType == "css")
$("#" + this.property.prevControlID).css("display", "block");
if (this.property.controlActionType == "attr")
$("#" + this.property.prevControlID).removeAttr("disabled");
//var prevPageString = this.property.position.get_pagingInfo();
//prevPageString = prevPageString.replace("PagedPrev", "Paged");
//this.property.position.set_pagingInfo(prevPageString);//设置上一页读取状态
this.property.pageIndex++;
}
this.property.query = new SP.CamlQuery();
this.property.query.set_viewXml(camlQuery);
this.property.query.set_listItemCollectionPosition(this.property.position);
this.property.listItems = this.property.targetList.getItems(this.property.query);
this.property.clientContext.load(this.property.listItems);
this.property.clientContext.executeQueryAsync(Function.createDelegate(this, success), Function.createDelegate(this, error));
},
/*设置分页控件状态*/
pagerControlHandle:function () {
this.property.position = this.property.listItems.get_listItemCollectionPosition();
if (this.property.position == null) {
if (this.property.pageState == "next")//如果是最后一页,禁用下一页
{
if (this.property.controlActionType == "css")
$("#" + this.property.nextControlID).css("display", "none");
if (this.property.controlActionType == "attr")
$("#" + this.property.nextControlID).attr("disabled", "disabled");
}
else if (this.property.pageState == "prev") {//如果是第一页,禁用上一页
if (this.property.controlActionType == "css")
$("#" + this.property.prevControlID).css("display", "none");
if (this.property.controlActionType == "attr")
$("#" + this.property.prevControlID).attr("disabled", "disabled");
}
else {//不足一页数据,上一页下一页按钮都禁用
if (this.property.controlActionType == "css") {
$("#" + this.property.prevControlID).css("display", "none");
$("#" + this.property.nextControlID).css("display", "none");
}
if (this.property.controlActionType == "attr") {
$("#" + this.property.prevControlID).attr("disabled", "disabled");
$("#" + this.property.nextControlID).attr("disabled", "disabled");
}
}
this.property.position = this.property.lastState;
}
else {
if (this.property.pageIndex == 1) {//如果到第一页,上一页禁用
//删除下一页的禁用状态
if (this.property.controlActionType == "css") {
$("#" + this.property.prevControlID).css("display", "none");
$("#" + this.property.nextControlID).css("display", "block");
}
if (this.property.controlActionType == "attr") {
$("#" + this.property.nextControlID).removeAttr("disabled");
$("#" + this.property.prevControlID).attr("disabled", "disabled");
}
}
}
},
isEmpty:function(value){
if ($.trim(value).length != 0) {
return false;
}
return true;
}
}

经过很多次的测试,终于不再出bug。很好用的小插件。推荐各位博友。

SharePoint2013 SharePoint-Hosted 模式 分页方法的更多相关文章

  1. 基于华清远见STM32f051的 IIC从模式实现方法

    作者:卢老师,华清远见嵌入式学院讲师. 在大多情况下,我们使用MCU控制传感器,节点以及相关从设备,但在较为复杂的系统中,有时候也会使用MCU做为从设备. 下面是关于stm32f051的从模式实现方法 ...

  2. Oracle、SQL Server、MySQL分页方法

    测试用例:查询TEST_TABLE表中TEST_COLUMN列的第10-20条数据 1,Oracle分页方法 SELECT A.* FROM ( SELECT ROWNUM ROWNO, B.* FR ...

  3. 设置IE默认文本模式的方法

    设置IE默认文本模式的方法 <meta http-equiv="X-UA-Compatible" content="IE=8" /> IE=5.6. ...

  4. 【解决】SharePoint集成模式下Reporting Service—为用户授予的权限不足,无法执行此操作。 (rsAccessDenied)

    环境:Windows Server 2008 R2 SP1,SharePoint 2010 企业版,SQL Server 2008 R2 Reporting Service(SharePoint集成模 ...

  5. Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全

    Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全 1. #====提升抽象层次1 2. #----使用通用单词1 3. #===使用术语..1 4.  ...

  6. Sql Server 2012 的新分页方法分析(offset and fetch) - 转载

    最近在分析 Sql Server 2012 中 offset and fetch 的新特性,发现 offset and fetch 无论语法的简洁还是功能的强大,都是相当相当不错的 其中 offset ...

  7. phalcon几种分页方法

    phalcon几种分页方法 一: use Phalcon\Paginator\Adapter\Model as PaginatorModel; // Current page to show // I ...

  8. 只是一个用EF写的一个简单的分页方法而已

    只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...

  9. Java设计模式之工厂模式(简单工厂模式+工厂方法模式)

    摘自http://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是 ...

随机推荐

  1. 组建Windows家庭组

    这里,是必须得针对Windows 7.8.10而言,因为,Windows XP 和 Windows Vista系统没有家庭网络的功能.(比较过时的一些系统了) 1.Windows家庭组的简介 使用家庭 ...

  2. TcxVerticalGrid demo

    procedure TForm1.Button1Click(Sender: TObject);var row: TcxEditorRow; i,t: Integer;begin grid.ClearR ...

  3. 备份数据表为insert 脚本

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  4. UITableView性能优化

    关于UITableView的性能优化,网络上也有一些总结.在这里就介绍下我们项目中遇到的问题以及对应的解决方法.相信我们遇到的问题也有一定的普适性,能够作为其他问题的优化方案. Instruments ...

  5. $().each 和 $.each() 两个方法的区别

    在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...

  6. Head First设计模式-观察者模式

    一.整体代码 Subject.java public interface Subject { public void registerObserver(Observer o); public void ...

  7. [置顶] 解成电OJ1003真实的谎言的记录

    原题目 Description   N个人做一个游戏,游戏中每个人说了一句话(可能是真的也可能是假的) 第i个人说:“N个人中有至少有ai个,至多有bi个人说的是真话!”(i = 1, 2, 3….. ...

  8. SpringMVC(二)

    今天在完成的工作的前提下,最终在睡觉前将SpringMVC和Mybatis整合了~~~ 其实就是按照从网上(参考http://www.toutiao.com/a6332703083554324737/ ...

  9. NGUI学习笔记(三):屏幕自适应

    我们开发移动端游戏的时候,一般都会选择Constrained/FixedSize的缩放模式来保证图片在不同的分辨率下相对于屏幕的尺寸保持一致,但是对于屏幕自适应来说,这还是不够的,不同的手机存在不同的 ...

  10. Android设计模式系列-组合模式

    Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用.在android UI设计,几乎所有的widget和布局类都依靠这两个类.组合模式,Compos ...