Вопрос

Мне нужно, чтобы действие по нажатию на заголовок элемента списка открывало форму редактирования, а не форму просмотра.Для этого я решил использовать CSR.

У меня есть следующий код:

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

Но я ничего не вижу в консоли браузера.Если я изменю код, это сработает, но столбец title не существует.

Вот мой отредактированный код:

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

Мои вопросы таковы:Есть ли какая-либо ошибка в моем коде?Могу ли я делать то, что хочу, по-другому?

Это было полезно?

Решение

Кажется, вы пытаетесь настроить LinkTitle поле - Title (linked to item with edit menu), но не Title поле.

Следующий пример демонстрирует, как визуализировать LinkTitle с URL-адресом, установленным для Редактирования формы вместо Отображения формы:

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

})();

Другие советы

- это поле заголовка в представлении, который вы пытаетесь применить это к?Существует множество вариантов поля заголовка (например, с меню (...)), поэтому убедитесь, что на ваш взгляд добавляется внутреннее имя в заголовке.

или используйте информацию, которую вы получаете от CTX.CurrentIteM во втором фрагменте кода, чтобы проверить, нет другого недвижимости, вы можете использовать

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top