• 数据量太大时,如何实现分页查询-JSOM


    利用Jsom实现分页查询:
    
    var data=[];
    function getItems()
    
    {
    
    licenceContext=new SP.ClientContext(); //var licenceContext =SP.ClientContext.get_current();
    
    licenceWeb=licenceContext.get_web();
    licenceList=licenceWeb.get_lists().getByTitle("listName"); 
    query_licence=new SP.CamlQuery();
    
    //需要哪些字段就将这些字段放到查询caml中,然后遍历时获取字段进行判断
    
    var queryTemp='<View><ViewFields>'
    +'<FieldRef Name="column1"/>'
    +'<FieldRef Name="column2"/>'
    +'<FieldRef Name="column3"/>'
    +'</ViewFields><RowLimit>1000</RowLimit></View>';
    
    //有时也会使用下列写法,但不一定有效
    
     
    
    /*var queryTemp = "<View>"
    + "<Query><Where>"
    + "<And>"
    + "<IsNotNull><FieldRef Name='column1'/></IsNotNull>"
    + "<And>"
    + "<Eq><FieldRef Name='column2'/><Value Type='Text'>A</Value></Eq>"
    + "<Eq><FieldRef Name='column3'/><Value Type='Text'>Y</Value></Eq>"
    + "</And>"
    + "</And>"
    + "</Where><OrderBy><FieldRef Name='column1' Ascending='false'/></OrderBy></Query>"
    
    + "<ViewFields>"
    + "<FieldRef Name='column1'/>"
    + "<FieldRef Name='column2'/>"
    + "<FieldRef Name='Status'/>"
    + "<FieldRef Name='column3'/>"
    + "<FieldRef Name='column4'/>"
    + "</ViewFields>"
    + "<RowLimit>5000</RowLimit>"
    +"</View>";*/
    
    query_licence.set_viewXml(queryTemp); 
    licenceCollListItem=licenceList.getItems(query_licence);
    licenceContext.load(licenceCollListItem);
    licenceContext.executeQueryAsync(Function.createDelegate(this,onQuerySucceeded),Function.createDelegate(this,onQueryFailed));
    }
    
    function onQuerySucceeded(){ 
    
    var listEnumerator=licenceCollListItem.getEnumerator();
    while(listEnumerator.moveNext())
    {
    var testObj={};
    var currentItem=listEnumerator.get_current();
    
    var column1=currentItem.get_item('column1')||"";
    var column2=currentItem.get_item("column2")||"";
    var column3=currentItem.get_item("column23")||"";
    testObj.column1=column1;
    testObj.column2=column2;
    testObj.column3=column3;
    data.push(testObj);
    }
    
    var position = licenceCollListItem.get_listItemCollectionPosition();
    if (position != null) 
    {
    query_licence.set_listItemCollectionPosition(position);
    licenceCollListItem = licenceList.getItems(query_licence); 
    licenceContext.load(licenceCollListItem); 
    licenceContext.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded), Function.createDelegate(this,onQueryFailed));
    }
    
    else
    {
      var SkuObjColl=[];
      SkuObjColl = data.where(function (z) { return z.column1 == "条件1"&& z.column2 == "条件2" });//linq条件筛选
    }
    SkuObjColl.forEach(function(result){//数据处理});
    }
    
    function onQueryFailed(sender, args) {
    console.log('Request failed. 
    Error: ' + args.get_message() + '
    StackTrace: ' + args.get_stackTrace());
    }
    
     
  • 相关阅读:
    node入门(一)——安装
    移动web开发基础(二)——viewport
    移动web开发基础(一)——像素
    关于min-height:100%的解决办法
    用类与原型写一个组件(三)——学习笔记
    用类与原型写一个组件(二)——学习笔记
    用类与原型写一个组件(一)——学习笔记
    js类、原型——学习笔记
    Android 常用RGB值及名称
    AES加密示例
  • 原文地址:https://www.cnblogs.com/learning-life/p/10405256.html
Copyright © 2020-2023  润新知