ctx в CSR не возвращает заголовок
-
10-12-2019 - |
Вопрос
Мне нужно, чтобы действие по нажатию на заголовок элемента списка открывало форму редактирования, а не форму просмотра.Для этого я решил использовать CSR.
У меня есть следующий код:
(function () {
var statusFieldCtx = {};
statusFieldCtx.Templates = {};
statusFieldCtx.Templates.Fields = {
"Title": {"View": DataFieldViewTemplate},
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(statusFieldCtx);
})();
function DataFieldViewTemplate(ctx) {
var data = ctx.CurrentItem.Title;
console.log(data);
}
Но я ничего не вижу в консоли браузера.Если я изменю код, это сработает, но столбец title не существует.
Вот мой отредактированный код:
(function () {
var statusFieldCtx = {};
statusFieldCtx.Templates = {};
statusFieldCtx.Templates.Fields = {
"dt_x0020_proximo_x0020_contato": {"View": DataFieldViewTemplate},
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(statusFieldCtx);
})();
function DataFieldViewTemplate(ctx) {
var data = ctx;
console.log(data);
}
Мои вопросы таковы:Есть ли какая-либо ошибка в моем коде?Могу ли я делать то, что хочу, по-другому?
Решение
Кажется, вы пытаетесь настроить LinkTitle
поле - Title (linked to item with edit menu)
, но не Title
поле.
Следующий пример демонстрирует, как визуализировать LinkTitle
с URL-адресом, установленным для Редактирования формы вместо Отображения формы:
(function () {
function titleRenderer(renderCtx) {
var item = ctx.CurrentItem;
return '<a class="ms-listlink" onfocus="OnLink(this)" href="' + renderCtx.editFormUrl + '" onclick="EditLink2(this,' + renderCtx.ListTemplateType + ');return false;" target="_self">' + item.Title + '</a>';
}
function registerRenderer()
{
var ctxTitleField = {};
ctxTitleField.Templates = {};
ctxTitleField.Templates.Fields = {
"LinkTitle": {
"View": titleRenderer
}
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctxTitleField);
}
ExecuteOrDelayUntilScriptLoaded(registerRenderer, 'clienttemplates.js');
})();
Другие советы
- это поле заголовка в представлении, который вы пытаетесь применить это к?Существует множество вариантов поля заголовка (например, с меню (...)), поэтому убедитесь, что на ваш взгляд добавляется внутреннее имя в заголовке.
или используйте информацию, которую вы получаете от CTX.CurrentIteM во втором фрагменте кода, чтобы проверить, нет другого недвижимости, вы можете использовать