Domanda

Devo effettuare l'azione di fare clic sul titolo di una voce di elenco Aprire il modulo di modifica e non il modulo di visualizzazione.Per fare ciò ho scelto di usare la CSR.

Ho il seguente codice:

(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);      
}
.

Ma non vedo nulla nella console del browser.Se modifico il codice, funziona, ma la colonna del titolo non esiste.

Ecco il mio codice modificato:

(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);      
}
.

Le mie domande sono: C'è qualche errore nel mio codice? Posso fare quello che voglio in un modo diverso?

È stato utile?

Soluzione

Sembra che tu stia cercando di personalizzare il campo LinkTitle - Title (linked to item with edit menu), ma non un campo Title.

L'esempio seguente dimostra come rendere LinkTitle con un URL impostato su per modificare il modulo anziché il modulo di visualizzazione:

(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');

})();
.

Altri suggerimenti

Il campo del titolo è nella vista che provi a applicarlo?Esiste effettivamente un numero di varianti del campo del titolo (ad esempio con il menu (...)) quindi assicurati che quello con il nome interno del titolo sia aggiunto alla tua vista.

o Utilizzare le informazioni che ottieni da ctx.currentitem nel tuo secondo snippet di codice per verificare se non c'è un'altra proprietà è possibile utilizzare

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top