#javascript #list #sharepoint #render
#javascript #Список #sharepoint #визуализация
Вопрос:
Я использую этот код внутри списка Sharepoint, чтобы добавить небольшой значок за заголовком. В коде отображается значок после текста, но список отображается не так, как обычно, и к нему больше нет доступа, например, код превращает его в скриншот.
<script>
(function () {
var excludeRows = [0,2,3];
function renderListItemTemplate(renderCtx) {
if(excludeRows.indexOf(renderCtx.CurrentItemIdx) > -1)
{
return ''; //do not render row
} else {
var ret = renderCtx.CurrentItem.Title "<img src='https://example.com/sites/ud07/HRM/Plaatjes/image.png'/>";
return ret;
}
return RenderItemTemplate(renderCtx);
}
function registerListRenderer()
{
var context = {};
context.Templates = {};
context.Templates.Item = renderListItemTemplate;
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(context);
}
ExecuteOrDelayUntilScriptLoaded(registerListRenderer, 'clienttemplates.js');
})();
</script>
Что мне нужно изменить, чтобы сделать его обычной функцией визуализации, которая возвращает список, как обычно?
Марко
Ответ №1:
Пожалуйста, ознакомьтесь с приведенной ниже демонстрацией:
(function () {
SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function () {
var excludeRows = [0, 2];
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
OnPostRender: function (ctx) {
var rows = ctx.ListData.Row;
rows.forEach((item, index) => {
if (excludeRows.indexOf(index) == -1) {
var rowElementId = GenerateIIDForListItem(ctx, item);
var tr = document.getElementById(rowElementId);
let jqueryO = $(tr);
let tardiv = jqueryO.find("td>div[field='LinkTitle']");
tardiv.append("<img src='https://abc.sharepoint.com/sites/sbdev/SiteAssets/MicrosoftTeams-image.png'/>");
}
});
}
});
});
})();
Результат: