如何通过 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/
我有一个 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/