Обновить значения библиотеки форм Infopath через rest api или jsom?

Можно ли программно обновить значения полей библиотеки форм infopath через rest api или JSOM? Если да, можете ли вы предоставить образец?

Я пробовал оба способа, и оба раза я получаю сообщения об успехе, хотя в тот момент, когда я просматриваю форму, я только что попытался обновить значения, оставаясь прежними.

<script>
  
    //Retrieve list items from sharepoint using API  
    function GetSampleListItems() {  
        siteURL = _spPageContextInfo.webAbsoluteUrl;  
        console.log("from top nav - " + siteURL);  
        var apiPath = _spPageContextInfo.webAbsoluteUrl +"/_api/lists/getbytitle('Training%20Copy')/items/getbyid(9)";  
        $.ajax({  
                url: apiPath,  
                type: "POST",  
                headers: {  
                    Accept: "application/json;odata=verbose"  
                },  
                data: JSON.stringify
                ({
                    __metadata:
                    {
                        type: "SP.Data.Training_x0020_CopyItem"
                    },
                    Position: "Show"
                }), 
                headers: {  
                "Accept": "application/json;odata=verbose",
                "Content-Type": "application/json;odata=verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                "IF-MATCH": "*",  
                "X-HTTP-Method": "MERGE" 
            }, 
            async: false, success: function(data) {  
                alert("Item updated successfully");  
            }, eror: function(data) {  
                console.log("An error occurred. Please try again.");  
            }
        })   
    
    }
</script>

<button onclick="GetSampleListItems();" type="button">Click me​</button>


person user2602844    schedule 26.10.2020    source источник


Ответы (2)


Я не программист и не знаю об API, но документы в библиотеке форм InfoPath - это просто текстовые файлы XML с необычным расширением. InfoPath - это, по сути, редактор XML на стероидах. Изменение значений в этих файлах должно быть возможным при любом подходе к редактированию текста, который может найти свой путь в иерархии XML.

Однако имейте в виду, что логика обработки в интерфейсе формы InfoPath может использоваться для управления данными в форме при ее отображении или редактировании. Например, проверка данных или значения некоторых полей устанавливаются автоматически в зависимости от значений других полей. Таким образом, простой взлом значений полей через серверную часть может привести к нежелательным результатам. Это также может быть причиной того, что вы не видите внесенных вами изменений.

person teylyn    schedule 26.10.2020

Вы можете обратиться к следующим статьям, чтобы обновить значения listitem через rest api или JSOM:

https://www.codesharepoint.com/jsom/update-listitem-in-sharepoint-using-jsom

https://www.codesharepoint.com/rest-api/update-listitem-in-sharepoint-using-rest-api

person Michael Han_MSFT    schedule 27.10.2020
comment
Привет, Майкл, я пробовал эти ссылки, но ничего не работает. Я получаю подтверждение в окне предупреждения, но когда я просматриваю фактические значения, оно остается неизменным. Я обновил свой исходный вопрос, включив в него образец кода - person user2602844; 27.10.2020