使用Javascript从Sharepoint列表的列表视图检索项目

使用Javascript从Sharepoint列表的列表视图检索项目,javascript,sharepoint-2013,sharepoint-designer,Javascript,Sharepoint 2013,Sharepoint Designer,这是我的代码:\ 这里的pranav_list是列表名,Main是该列表的视图 <script type="text/javascript"> function retrieveListViewItems(){ alert('start'); var cc = SP.ClientContext.get_current(); var alllist = cc.get_web().get_lists().getByTitle('pranav_list');

这是我的代码:\

这里的
pranav_list
是列表名,
Main
是该列表的视图

<script type="text/javascript">
    function retrieveListViewItems(){
    alert('start');
    var cc = SP.ClientContext.get_current();
    var alllist = cc.get_web().get_lists().getByTitle('pranav_list');
    var view = alllist.get_views().getByTitle('Main');
    var caml = new SP.CamlQuery();
    caml.set_viewXml('<View><Query><Where><Leq>' + 
                '<FieldRef Name=\'ID\'/><Value Type=\'Number\'>100</Value>' + 
                '</Leq></Where></Query><RowLimit>8</RowLimit></View>'); 

    this.list = view.getItems(caml);
    cc.load(list);
   cc.executeQueryAsync(Function.createDelegate(this,this.QuerySucceeded5),Function.createDelegate(this,this.onQueryFailed));
    }
    function QuerySucceeded5(){
    var listiteminfo='';

    var listItemEnumerator = list.getEnumerator();
    while(listItemEnumerator.moveNext())
    {
      var listitem = listItemEnumerator.get_current();

     listiteminfo += '\nID:'+ listitem.get_id() +
                      '\nFirstName:' + listitem.get_item('Title') +
                      '\nLastName:' + listitem.get_item('LN') +
                      '\nAge:' + listitem.get_item('Age') +
                      '\n City:' + listitem.get_item('City');

    // alert(listiteminfo.toString());       
    }
    alert(listiteminfo.toString());
            }
    function onQueryFailed(){
    alert("Failed");
    }
    </script>

函数retrieveListViewItems(){
警报(“启动”);
var cc=SP.ClientContext.get_current();
var alllist=cc.get_web().get_list().getByTitle('pranav_list');
var view=alllist.get_views().getByTitle('Main');
var caml=new SP.CamlQuery();
caml.set_viewXml(“”+
'100' + 
'8'); 
this.list=view.getItems(caml);
cc.负载(列表);
cc.executeQueryAsync(Function.createDelegate(this,this.QuerySucceeded5),Function.createDelegate(this,this.onQueryFailed));
}
函数querySucceed5(){
var listiteminfo='';
var listItemEnumerator=list.getEnumerator();
while(listItemEnumerator.moveNext())
{
var listitem=listItemEnumerator.get_current();
listiteminfo+='\nID:'+listitem.get_id()+
“\nFirstName:”+listitem.get_项目('Title'))+
“\nLastName:”+listitem.get_项('LN'))+
'\nAge:'+listitem.get_项('Age')+
“\n城市:”+listitem.get_项目(“城市”);
//警报(listiteminfo.toString());
}
警报(listiteminfo.toString());
}
函数onQueryFailed(){
警报(“失败”);
}

救命啊

> P>由于JSOM API不支持从视图中检索列表项,您可以考虑以下方法:

  • 检索视图的CAML查询
  • 将该查询提供给
    SP.List.getItems()
    方法
范例

function getItemsFromView(listTitle, viewTitle,success,error)
{
    var ctx = SP.ClientContext.get_current();
    var list = ctx.get_web().get_lists().getByTitle(listTitle);
    var view = list.get_views().getByTitle(viewTitle);
    ctx.load(view,'ViewQuery');
    ctx.executeQueryAsync(
        function() {
            var viewQry = "<View><Query>" + view.get_viewQuery() + "</Query></View>";
            getItems(listTitle,viewQry,success,error);
        },
        error);
}

function getItems(listTitle, queryText,success,error) 
{
    var ctx = SP.ClientContext.get_current();
    var list = ctx.get_web().get_lists().getByTitle(listTitle);
    var query = new SP.CamlQuery();
    query.set_viewXml(queryText);
    var items = list.getItems(query);
    ctx.load(items);
    ctx.executeQueryAsync(
        function() {
            success(items);
        },
        error
   );
}

这可能对这里的一些人有所帮助。在我添加检查sp.js是否已加载的行之前,代码对我不起作用

SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);

function sharePointReady(){
   //Code goes here
}
还请注意,我使用了当前站点以外的站点上下文。我的整个解决方案见下文。谢谢瓦迪姆!!!真正的救命恩人。其他示例代码和文档代码不适合我


$(文档).ready(函数(){
//确保在代码运行之前加载了必要的SharePoint脚本文件“sp.js”
SP.SOD.executeFunc('SP.js','SP.ClientContext',sharePointReady);
函数sharePointReady(){
getItemsFromView(“我的列表”、“所有项目”,
功能(项目){
对于(var i=0;i
我尝试过这个方法,如果列表中有大量数据,并且希望从中搜索某些内容,则检索时间太长,性能低下。。我想要一些可以从视图中直接检索项目的东西…不,SharePoint CSOM/JSOM API不支持查询列表视图
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);

function sharePointReady(){
   //Code goes here
}