I need to get all root folders of lists on current web, with shrepoint client object model.
I try to use this code, but i have error
var context = SP.ClientContext.get_current();
var lists = context.get_web().get_lists();
context.load(lists);
context.executeQueryAsync(function (sender, args) {
var enumerator = lists.getEnumerator();
while (enumerator.moveNext()) {
var list = enumerator.get_current();
var rootFolder = list.get_rootFolder();
context.load(rootFolder, 'ServerRelativeUrl');
context.executeQueryAsync(
function (sender, args) {
//error
var url = rootFolder.get_serverRelativeUrl();
console.log(url);
},
function (sender, args) {
console.log('error');
});
}
},
function (sender, args) {
console.log('error');
});
Thanks
This error occurs because List.RootFolder property has not been initialized since it was not requested.
In order to load List.RootFolder replace the line:
context.load(lists);
with this one:
context.load(lists,'Include(RootFolder)');
But the specified example contains another flaws:
ServerRelativeUrl
propertyBelow is demonstrated the fixed version that prints root folders for all lists:
var context = SP.ClientContext.get_current();
var lists = context.get_web().get_lists();
context.load(lists,'Include(RootFolder)');
context.executeQueryAsync(function () {
var enumerator = lists.getEnumerator();
while (enumerator.moveNext()) {
var list = enumerator.get_current();
var rootFolder = list.get_rootFolder();
var url = rootFolder.get_serverRelativeUrl();
console.log(url);
}
},
function (sender, args) {
console.log('error');
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With