Обновление поля Таксономия вызывает исключение, когда "castTo TaxonomyField" - PullRequest
0 голосов
/ 11 мая 2018

У меня есть список, который содержит поле таксономии. Мне нужна функция, которая обновляет элемент из этого списка (у меня есть идентификатор) и изменяет это поле на одно из его значений (всегда одно и то же). Я искал и использовал функции, которые использовал в прошлом, это код, который я использую сейчас:

function SetSingleTaxonomyField(siteUrl, listName, fieldInternalName, itemId, term) {
        return new Promise(function (resolve, reject) {
            var context = new SP.ClientContext(siteUrl);
            var list = context.get_web().get_lists().getByTitle(listName);
            var listItem = list.getItemById(itemId);
            context.load(listItem);

            var categoryField = list.get_fields().getByInternalNameOrTitle(fieldInternalName);
            var taxonomyValue = set_taxonomyField(term);
            var taxField = context.castTo(categoryField, SP.Taxonomy.TaxonomyField);
            taxField.setFieldValueByValue(listItem, taxonomyValue);
            listItem.update();
            context.load(listItem);
            context.executeQueryAsync(function () {
                resolve();
                //console.log('Field successfully updated.');
            }, function (sender, args) {
                reject('An error occurred:' + args.get_message());
                //console.log('An error occurred:' + args.get_message());
            });
        });
    }

Строка выше:

var taxonomyValue = set_taxonomyField(term);

вызывает эту функцию:

        function set_taxonomyField(term) {
        var taxonomyValue = new SP.Taxonomy.TaxonomyFieldValue();
        if (term !== undefined) {
            taxonomyValue.set_label(term.Title);
            taxonomyValue.set_termGuid(term.Id);
            taxonomyValue.set_wssId(-1);
        }
        return taxonomyValue;
    }

Исключение срабатывает в

     var taxField = context.castTo(categoryField, SP.Taxonomy.TaxonomyField);

Это ошибка, которую я получаю:

Possible Unhandled Promise Rejection: Error: Sys.ArgumentException: Value does not fall within the expected range.
Parameter name: type
at Function.Error.create (ScriptResource.axd?d=N...fc8ae3:5)
at Function.Error.argument (ScriptResource....0&t=72fc8ae3:5)
at SP.ClientContext.castTo (sp.runtime.js:2)"

У меня есть другие подобные функции, но это единственная функция, которую я все "жестко закодировал" (имя термина, внутреннее имя поля и идентификатор термина). Но проверяя другие функции, используя тот же термин, значения кажутся правильными.

Понятия не имею, как это решить, заранее спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

Сегодня у меня была та же ошибка, что и несколько месяцев назад, я наконец исправил ее. Проблема заключалась в том, что я загружал в разных местах файл "SP.Taxonomy", поэтому при использовании SP.Taxonomy.TaxonomyField он отправлял неверный аргумент (не знаю почему, но исправлял его, удалив только одну ссылку на SP.Taxonomy, кроме одной) ).

...