【问题标题】:Retrieve Items from a List View of a Sharepoint List using Javascript使用 Javascript 从 Sharepoint 列表的列表视图中检索项目
【发布时间】:2015-06-16 03:57:56
【问题描述】:

这是我的代码:\

这里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>

求救!!

【问题讨论】:

    标签: javascript sharepoint-2013 sharepoint-designer


    【解决方案1】:

    由于 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
       );
    }
    

    用法

    以下示例演示如何从All Tasks 视图中的Tasks 列表中检索列表项:

    getItemsFromView("Tasks", "All Tasks",
     function(items){
        for(var i = 0; i < items.get_count(); i++){
            var item = items.get_item(i);
            console.log(item.get_item('Title'));
        }
     },
     function(sender,args){ 
        console.log(args.get_message())
     });
    

    【讨论】:

    • 我已经尝试过了,如果我们在列表中有大量数据并且想要从中搜索一些东西,它会花费太多时间来检索并且性能低下。我想要一些可以检索直接项目的东西从视图...
    • 不,SharePoint CSOM/JSOM API 不支持查询列表视图
    【解决方案2】:

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

    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);
    
    function sharePointReady(){
       //Code goes here
    }
    

    另外请注意,我使用了当前站点以外的站点的上下文。有关我的整个解决方案,请参见下文。谢谢瓦迪姆!!!一个真正的救生员。其他示例代码和文档代码对我不起作用。

    <script type="text/javascript">
    
    $(document).ready(function(){
        //Make sure the necessary SharePoint script file 'sp.js' is loaded before your code runs
        SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);
    
        function sharePointReady(){
    
            getItemsFromView("My List", "All Items",
             function(items){
                 for(var i = 0; i < items.get_count(); i++){
                     var item = items.get_item(i);
                     console.log(item.get_item('Title'));
                 }
             },
             function(sender,args){ 
                 console.log(args.get_message())
             });
        }
    }); //End Document.ready
    
    function getItemsFromView(listTitle, viewTitle,success,error)
    {
        var ctx = new SP.ClientContext('https://mywebsite.name/site/subsite');
        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 = new SP.ClientContext('https://mywebsite.name/site/subsite'');
        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
       );
    }
    </script>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多