ctx dans la RSE renvoie pas le titre
-
10-12-2019 - |
Question
J'ai besoin de faire l'action de cliquer sur le titre d'un élément de la liste d'ouvrir le formulaire de modification, et non pas le point de vue de la forme.Pour ce faire j'ai choisi d'utiliser la RSE.
J'ai le code suivant:
(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);
}
Mais je ne vois rien dans le navigateur de la console.Si je change le code, cela fonctionne, mais le titre de la colonne n'existe pas.
Ici est édité mon code:
(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);
}
Mes questions sont les suivantes:Est-il une erreur dans mon code?Je peux faire ce que je veux dans une manière différente?
La solution
Il semble que vous essayez de personnaliser LinkTitle
le terrain Title (linked to item with edit menu)
, mais pas un Title
champ.
L'exemple suivant montre comment rendre LinkTitle
avec une Url définie à Modifier la Forme au lieu d'Afficher le Formulaire:
(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');
})();
Autres conseils
est le champ de titre dans la vue que vous essayez d'appliquer ceci à?Il existe en fait un certain nombre de variantes du champ de titre (par exemple avec le menu (...)), assurez-vous que celui avec le nom interne du titre est ajouté à votre vue.
ou utilisez les informations que vous obtenez de CTX.CurrentItem dans votre deuxième extrait de code pour vérifier s'il n'y a pas d'autre propriété que vous pouvez utiliser