/**分页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. uva 11019 Matrix Matcher

    题意:给出一个n*m的字符矩阵T,你的任务是找出给定的x*y的字符矩阵P在T中出现了多少次. 思路:要想整个矩阵匹配,至少各行都得匹配.所以先把P的每行看做一个模式串构造出AC自动机,然后在T中的各行 ...

  2. c++ 观察者模式

    观察者模式之比喻: 有家公司,老板经常不按时上班,于是员工就可以在老板来之前的那段时间娱乐一下,但是又过的是心惊胆战,怕 老板随时出现:这是观察者模式就起作用了:公司有个前台,她总是第一个看到老板进门 ...

  3. 【转】开源C/C++网络库比较

    在开源的C/C++网络库中, 常用的就那么几个, 在业界知名度最高的, 应该是ACE了, 不过是个重量级的大家伙, 轻量级的有libevent, libev, 还有 Boost的ASIO. ACE是一 ...

  4. AD板层定义介绍(二)

    1.顶层信号层(Top Layer):也称元件层,主要用来放置元器件,对于比层板和多层板可以用来布线: 2.中间信号层(Mid Layer): 最多可有30层,在多层板中用于布信号线. 3.底层信号层 ...

  5. SOD-80 LL34 DL-35 (2.7~75V)贴片稳压二极管【worldsing 笔记

    ¨ Silicon Planar Zener Diodes ¨ In Mini-MELF case especially for automatic insertion. ¨ The Zener vo ...

  6. Javascript注意事项三【使用假值】

    0 //NumberNaN //Number'' //Stringfalse //Booleannull //Objectundefined //Undefined这些值全部都等同于false,但是它 ...

  7. C# Winform 支持Hex与ASCII输入和切换的文本框

    最近一直在做一个支持串口,TCP,UDP通讯调试的一体化工具(也就是C#串口调试工具 v2.0的第三版),其中涉及到16进制数据和ASCII码的输入,所以继承了TextBox的基础上,写了这个支持He ...

  8. ios基础知识

    1获取系统语言设置 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSArray *languages = ...

  9. 关于开源的RTP——jrtplib的使用

    session.BeginDataAccess(); if (session.GotoFirstSource()){ do{ RTPPacket *packet; while ((packet = s ...

  10. iOS开发——MVC详解&Swift+OC

    MVC 设计模式 这两天认真研究了一下MVC设计模式,在iOS开发中这个算是重点中的重点了,如果对MVC模式不理解或者说不会用,那么你iOS肯定学不好,或者写不出好的东西,当然本人目前也在学习中,不过 ...