20

To get all the items in a List you use

// Setup context & load web
context = new SP.ClientContext.get_current();
web = context.get_web();
context.load(web);

// Load task list
this.List = web.get_lists().getByTitle("YOUR_LIST_NAME);
context.load(this.List);

// Create a query to get all items
var camlQuery = SP.CamlQuery.createAllItemsQuery();
this.ListItems = this.View.getItems(camlQuery);
context.load(this.ListItems);

// Call the server and pass callback functions
context.executeQueryAsync(
               Function.createDelegate(this, this.InitialLoad_OnSucccess),
               Function.createDelegate(this, this.OnFailure));

How do you get all the items in a View?

Ryan
  • 5,835
  • 8
  • 28
  • 54

3 Answers3

21

This could be done, but unfortunately only using two requests: first to retrieve view query text, second - to retrieve the items.

function getItemsFromView(listTitle, viewTitle)
{

    var context = new SP.ClientContext.get_current();
    var list = context.get_web().get_lists().getByTitle(listTitle);
    var view = list.get_views().getByTitle(viewTitle);
    context.load(view);

    context.executeQueryAsync(
        function(sender, args) {getItemsFromList(listTitle, "<View><Query>" + view.get_viewQuery() + "</Query></View>")},
        function(sender, args) {alert("error: " + args.get_message());}
    );
}

function getItemsFromList(listTitle, queryText) 
{
    var context = new SP.ClientContext.get_current();
    var list = context.get_web().get_lists().getByTitle(listTitle);

    var query = new SP.CamlQuery();
    query.set_viewXml(queryText);

    var items = list.getItems(query);

    context.load(items);
    context.executeQueryAsync(
        function()
        {
            var listEnumerator = items.getEnumerator();
            var i = 0;
            while (listEnumerator.moveNext())
            {
                i++;
            }
            alert("items retrieved: " + i);
        },
        function(sender, args) {alert("error in inner request: " + args.get_message());}
   );

}

// example of usage    
getItemsFromView("Tasks", "My Tasks");

P.S. The code is tested and works in my environment.

Andrey Markeev
  • 16,286
  • 3
  • 40
  • 70
3

The following code should work:

  function runCode() {
      var clientContext = new SP.ClientContext();
      var targetList = clientContext.get_web().get_lists().getByTitle('Announcements');
      var view = targetList.get_views().getByTitle("View Name");
      var query = new SP.CamlQuery();
      query.set_viewXml(view.get_htmlSchemaXml());
      listItems = targetList.getItems(query);
      clientContext.load(listItems);
      clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
    }

    function onQuerySucceeded() {
      var listEnumerator = listItems.getEnumerator();
      while (listEnumerator.moveNext()) {
        alert("Item containing ‘announce’ found! \nTitle: " + listEnumerator.get_current().get_item("Title"));
      }  
    }

    function onQueryFailed(sender, args) {
      alert('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace());
    }
Vardhaman Deshpande
  • 10,462
  • 1
  • 26
  • 52
  • Getting a "SP.ClientObject.checkUninitializedProperty" error on get_htmlSchemaXml – Ryan Feb 03 '12 at 13:30
  • 2
    You might want to ClientContext.load() that property. – Vardhaman Deshpande Feb 03 '12 at 13:53
  • clientContext.load(view,"HtmlSchemaXml") Didn't work, is that what you mean? Can you show what you mean please and have you had this code running? – Ryan Feb 03 '12 at 14:00
  • For those who wonder - you need to do an executeQueryAsync to retrieve HtmlSchemaXml before accessing it via get_htmlSchemaXml. – Mx. Oct 10 '16 at 09:37
-4

Since delegates cannot return values or populate anything anywhere in the script, they have NO value. Web services are the only option. This method can only display alerts to the user. Worthless!

Clem
  • 21
  • 2