Monday, April 1, 2013

SharePoint 2013 - SharePoint Hosted App For Reading All the List From the Host Web Using Cross-Domain Calls

1. Create any sample project using SharePoint App Template
2. Go to Manifest.xml file and give Read permission for List
3. Edit App.js file and replace with given value



var web;
var hostweburl;
var appweburl;

$(document).ready(function () {
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () { sharePointReady(); });
});

function sharePointReady() {
    hostweburl =
         decodeURIComponent(
             getQueryStringParameter('SPHostUrl')
     );
    appweburl =
        decodeURIComponent(
            getQueryStringParameter('SPAppWebUrl')
     );

    var scriptbase = hostweburl + '/_layouts/15/';

    $.getScript(scriptbase + 'SP.Runtime.js',
        function () {
            $.getScript(scriptbase + 'SP.js',
                function () { $.getScript(scriptbase + 'SP.RequestExecutor.js', printAllListNamesFromHostWeb); }
            );
        }
    );
}

function getQueryStringParameter(param) {
    var params = document.URL.split("?")[1].split("&");
    var strParams = "";
    for (var i = 0; i <  params.length; i = i + 1) {
        var singleParam = params[i].split("=");
        if (singleParam[0] == param) {
            return singleParam[1];
        }
    }
}

function printAllListNamesFromHostWeb() {
    var context;
    var factory;
    var appContextSite;
    var collList;

    context = new SP.ClientContext(appweburl);
    factory = new SP.ProxyWebRequestExecutorFactory(appweburl);
    context.set_webRequestExecutorFactory(factory);
    appContextSite = new SP.AppContextSite(context, hostweburl);

    this.web = appContextSite.get_web();
    collList = this.web.get_lists();
    context.load(collList);

    context.executeQueryAsync(
        Function.createDelegate(this, successHandler),
        Function.createDelegate(this, errorHandler)
    );

    function successHandler() {
        var listInfo = '';
        var listEnumerator = collList.getEnumerator();

        while (listEnumerator.moveNext()) {
            var oList = listEnumerator.get_current();
            listInfo += '< li>' + oList.get_title() + '< /li>';
        }

        document.getElementById("message").innerHTML = 'Lists found:< ul>' + listInfo + '< /ul>';
    }

    function errorHandler(sender, args) {
        document.getElementById("message").innerText =
            "Could not complete cross-domain call: " + args.get_message();
    }
}

No comments:

Post a Comment