如何通过 JavaScript 从 SharePoint 列表中获取值,其中列的值通过术语库存储?

How can one fetch values via JavaScript from a SharePoint list with columns that have values stored via term store?

我有一个 jqGrid,其中 2 列的值来自术语库。

“Mandant”和“Vertragspartner”列中的值是通过术语库管理工具存储的,未被提取:

在列表视图中,我可以看到值:

这是 JavaScript 代码的重要部分,但我不知道我必须如何更改它才能获取数据,并将其放入 jqgrid,因为它只是一个简单的 Ajax打电话。

怎么没有人事先问过这个问题?我无法在互联网上找到解决方案。

function loadSubTables() {
    loadGrid("Vertragserstellung", "&$select=Id,Title,SPLUSCMGTClient,SPLUSCMGTArea,SPLUSCMGTContractType,bscomProcStatus,Vertrags,SPLUSCMGTEndDate,SPLUSCMGTStartDate,Created,Modified,Vertragsstatus&$orderby=Id desc&$top=9999", "gridmyopen", cnMyEntries, cmMyEntries, true);
}

function loadGrid(listname, query, divname, columns, columnModels, showFilter, showExcelExport, hideFooter) {

    $("#" + divname).jqGrid({
        rowNum: '',
        footerrow: hideFooter,
        datatype: function () {
            loadGridData(listname, query, divname);
        },
        colNames: columns,
        colModel: columnModels,
        autowidth: true,
        loadonce: true, 
        gridComplete: function () {
            $("#" + divname).jqGrid('setGridParam', { datatype: 'local' });
            $("#" + divname + "no").html(" [" + $("#" + divname).jqGrid('getGridParam', 'records') + "]");
            $('.ui-jqgrid .ui-jqgrid-bdiv').css('overflow-x', 'hidden'); // hides horizontal scrollbar
        },
        ondblClickRow: function (rowid, iRow, iCol, e) {
            onDoubleClickGrid(rowid, iRow, iCol, e, divname, listname);
        }
    });
    
    if (showFilter) {
        $("#" + divname).jqGrid('filterToolbar', {
            autosearch: true,
            stringResult: false,
            searchOnEnter: true,
            defaultSearch: "cn",
        });
    }
}

function loadGridData(listname, query, divname) {
    $.ajax({
        url: "https://company.de/sites/appContracts/_api/web/lists/getbytitle('" + listname + "')/Items?" + query,
        type: "GET",
        headers: { "Accept": "application/json;odata=verbose" },
        success: function (data, textStatus, xhr) {
            console.log("dat.d.results: ", data.d.results);
            var thegrid = $("#" + divname)[0];
            thegrid.addJSONData(data.d.results); 
        },
        error: function (xhr, textStatus, errorThrown) {
            alert("error:" + JSON.stringify(xhr));
            $('#' + divname + 'records').html(" [0]");
        }
    });
}

通常我们在 SharePoint REST API 中使用 TaxCatchAll 来获取托管元数据列值。

$select=TaxCatchAll/ID,TaxCatchAll/Term&$expand=TaxCatchAll

您可以查看这篇文章了解更多:https://sympmarc.com/2017/06/19/retrieving-multiple-sharepoint-managed-metadata-columns-via-rest/