вторник, 10 октября 2017 г.

Как получить значение поля в DispForm

Некоторое время назад появилась задача произвести манипуляции с полем (скрыть/показать) на форме просмотра.
Можно пойти по пути обращения к полю по его названию, но мне этот вариант не нравиться.


Я решил пойти по пути CSR.

'use strict';
'use strict';
(function () {
    var ctx = {};
    ctx.Templates = {};
    ctx.Templates.Fields = { 
               'Status':{   'DisplayForm': AddIdInField  }
    };
    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctx);
    function AddIdInField(ctx) {
    console.log(ctx.CurrentFieldValue)
        return '
' + SPField_FormDisplay_Default(ctx) + '
';     }   })();

что делает скрипт 

Для поля Status переопределяет свой шаблон рендера и возвращаем стандартный шаблон отображения поля обернутый в DIV с id поля.

что имеем

1. значение поля (в примере выводится в консоль)

2. div c id, что позволяет нам обратиться к нему и произвести манипуляции

Как пользоваться:
Указать свой id поля и указать требуемый шаблон рендера (вместо  SPFieldNote_Display).
Шаблоны для разных видов полей можно посмотреть тут

2 комментария:

  1. Здравствуйте, Владимир! А есть ли возможность изменять размеры DispForm, EditForm?

    ОтветитьУдалить
  2. добрый день.
    только заметил вопрос.
    много возможно, что именно нужно?

    ОтветитьУдалить