ctx em RSE não devolver o título
-
10-12-2019 - |
Pergunta
Eu preciso fazer a ação de clicar no título de um item de lista abrir o formulário de edição, e não o modo de exibição formulário.Para fazer isso optei por usar o RSE.
Eu tenho o seguinte código:
(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);
}
Mas eu não vejo nada no console do navegador.Se eu alterar o código, isso funciona, mas o título da coluna não existe.
Aqui é o meu código editado:
(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);
}
Minhas perguntas são:Há algum erro no meu código?Posso fazer o que eu quero de uma maneira diferente?
Solução
Parece que você está tentando personalizar LinkTitle
campo - Title (linked to item with edit menu)
, mas não um Title
de campo.
O exemplo a seguir demonstra como processar LinkTitle
com um conjunto de Url para a Edição do Formulário, em vez de Exibir Formulário:
(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');
})();
Outras dicas
É o título do campo na vista de tentar aplicar isso?Há, na verdade, existe um número de variantes do campo de título (por exemplo, com o (...) menu) para certificar-se um com o nome interno do Título é adicionado à sua vista.
Ou usar as informações obtidas do ctx.CurrentItem em seu segundo trecho de código para verificar se não há outra propriedade que você pode usar