Как получить список из коллекции списков? getByTitle возвращает пустой список

Итак, я извлекаю кучу списков из host-web и помещаю их в список listCollection, подобный описанному здесь.

Затем я пытаюсь получить доступ к определенному списку с именем TestList. Однако я не могу получить к нему доступ из listCollection, используя getByTitle("TestList"). Это даст мне список без информации из списка, который я получаю.

Однако, если я перебираю перечислитель, пока не найду список с заголовком TestList, я могу его использовать.

Кто-нибудь знает, почему это не работает?

var testList = listCollection.getByTitle("TestList");
console.log(testList);

Но это делает?

var listEnumerator = listCollection.getEnumerator();

while (listEnumerator.moveNext()) {

    oList = listEnumerator.get_current();

    if (oList.get_title() == "TestList") {
        console.log(oList);
    }
}

Эти console.log дают соответствующие результаты. Обратите внимание, что в верхнем нет Object внутри ClientObjectData. Почему это? Что мне не хватает?

введите здесь описание изображения

Спасибо


person Charles Clayton    schedule 03.02.2015    source источник


Ответы (1)


Используя метод getByTitle из sp.js, вы должны использовать его следующим образом.

SP.ListCollection.getByTitle()

ПРИМЕЧАНИЕ. При этом вы получите только имя списка, а не массив объектов.

Возвращает список с указанным заголовком из коллекции.

Чтобы получить элементы внутри списка, вы должны использовать этот метод.

SP.List.getItems()

Возвращает коллекцию элементов из списка на основе указанного запроса

Из документов SP.Listgetitemns

Вместо просто:

var testList = listCollection.getByTitle("TestList");

Пытаться

var testList = listCollection.getByTitle("TestList");
listItemCollection = testList.getItems(""); // or use a CAMLQuery to be more specific
context.load(listItemCollection);
context.executeQueryAsync(onQuerySucceeded, onQueryFailed);

Затем он должен быть заполнен и должен выглядеть как второй пример.

person Ethaan    schedule 03.02.2015
comment
Я не уверен, что ты имеешь в виду. Чем это отличается от того, что я пробовал изначально? Строка SP.ListCollection.getByTitle("TestList"); выдает предсказуемую ошибку Uncaught TypeError: undefined is not a function. - person Charles Clayton; 03.02.2015
comment
убери L и поставь l lowerCase - person Ethaan; 03.02.2015
comment
это должно работать с l lowerCase вот так var testList = SP.listCollection.getByTitle("TestList"); - person Ethaan; 03.02.2015
comment
То же самое, var testList = SP.listCollection.getByTitle("blahlblah"); Uncaught TypeError: Cannot read property 'getByTitle' of undefined. - person Charles Clayton; 04.02.2015
comment
похоже, getByTiltle просто верните title of the list, чтобы получить элементы, вам нужен этот метод List.getItems() проверьте обновление ответа - person Ethaan; 04.02.2015
comment
Я не думаю, что это правильно. Посмотрите на этот пример: msdn.microsoft. com/en-us/library/office/ getByTitle используется для получения рассматриваемого списка из коллекции, возвращаемой clientContext.get_web().get_lists(), что я и пытаюсь сделать. Затем getItems используется для получения элементов списка, который вы уже получили, используя getByTitle. - person Charles Clayton; 04.02.2015
comment
Ну, то, что вы говорите, правильно, почему бы не использовать такой метод.. testList.getItems()? - person Ethaan; 04.02.2015
comment
Ой! Ты прав, ты прав. Я не показываю это в коде, который я разместил, но я делаю getItems() на oList, поэтому он отличается от testList в console.log. Я просто подумал, что в то время, когда я делал console.log, они должны быть одинаковыми, потому что это было до того, как я сделал getItems. - person Charles Clayton; 04.02.2015