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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top