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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top