Pregunta

Necesito hacer que la acción de hacer clic en el título de un elemento de la lista abra el formulario de edición y no el formulario de visualización.Para ello elegí utilizar la RSE.

Tengo el siguiente 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);      
}

Pero no veo nada en la consola del navegador.Si cambio el código, esto funciona, pero la columna de título no existe.

Aquí está mi 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);      
}

Mis preguntas son:¿Hay algún error en mi código?¿Puedo hacer lo que quiero de otra manera?

¿Fue útil?

Solución

Parece que estás intentando personalizar LinkTitle campo - Title (linked to item with edit menu), pero no un Title campo.

El siguiente ejemplo demuestra cómo renderizar LinkTitle con una URL configurada para Editar formulario en lugar de Mostrar formulario:

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

})();

Otros consejos

¿Es el campo Título en la vista, intenta aplicar esto a?En realidad, existe una serie de variantes del campo de título (por ejemplo, con el menú (...), por lo que asegúrese de que el nombre interno del título se agregue a su vista.

o use la información que obtiene de CTX.CURRENTITEM en su SNIPPET de segundo código para verificar si no hay otra propiedad que pueda usar

Licenciado bajo: CC-BY-SA con atribución
scroll top