Изменение формы списка по умолчанию с помощью CSR в SharePoint 2016 - PullRequest
0 голосов
/ 04 июня 2019

Я новый разработчик SharePoint, работающий в предварительной среде 2016 года. Я изучал варианты изменения форм списков с использованием стандартного режима рендеринга на стороне клиента, но затрудняюсь решить простые задачи в рамках метода SPClientTemplates.TemplateManager.RegisterTemplateOverrides.

На странице NewForm.aspx я хотел бы поменять местами поле «Описание» (которое отображается под каждым полем ввода) и поле «Заголовок» (метка в левом столбце) в каждой строке формы по умолчанию. Я могу получить доступ к этим полям данных в объекте ctx рассматриваемого метода, но я не могу написать решение, которое могло бы выполнить их замену.

Я следил за статьями Андрея Маркеева по этой теме ( Формы списка SP CSR и Формы списка SP CSR + Layout ), но у меня нет рабочего кода для отображения Это. Вот я регистрирую два поля, которые меня интересуют в обмене:

SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
  OnPreRender: function(ctx) {
    console.log(ctx.ListSchema.Field[0].Description);
    console.log(ctx.ListSchema.Field[0].Title);
  }
});

Какой самый простой способ сделать это?

1 Ответ

1 голос
/ 04 июня 2019

Не уверен насчет вашего требования 'swap', хотя вы можете использовать jQuery для обновления структуры DOM.

Здесь приведена демонстрация для изменения рендера Field Comment (с последнего на второй).

enter image description here

Результат CSR.

enter image description here

Вставьте веб-часть редактора сценариев в новую форму и вставьтесценарий в него.

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script type="text/javascript">
        SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
            OnPreRender: function (ctx) {
                //console.log(ctx.ListSchema.Field[0].Description);
                //console.log(ctx.ListSchema.Field[0].Title);
                $("nobr:contains('Comment')").closest('tr').insertBefore($('table.ms-formtable>tbody>tr:nth-child(2)'));
            }
        });
    </script>
...