在SharePoint 2016中使用CSR修改默认列表形式

时间:2019-06-03 22:01:27

标签: sharepoint sharepoint-2016

我是在2016年本地环境中工作的新SharePoint开发人员。我一直在探索使用“标准客户端渲染”渲染模式修改列表表单的选项,但是我对如何在SPClientTemplates.TemplateManager.RegisterTemplateOverrides方法内完成简单任务不知所措。

NewForm.aspx页上,我希望在默认表单的每一行中交换“描述”字段(显示在每个输入字段的下方)和“标题”字段(在左列的标签)。我可以在有问题的方法的ctx对象中访问这些数据字段,但似乎无法编写出可以完成交换它们的解决方案。

我一直在关注Andrei Markeev关于该主题(SP CSR List FormsSP CSR List Forms + Layout)的文章,但没有可用于演示的代码。这是我记录与交换有关的两个字段:

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

最简单的方法是什么?

1 个答案:

答案 0 :(得分:1)

虽然可以使用jQuery来更新DOM结构,但是不太确定您的要求是否为“交换”。

这里是将“字段注释”渲染(从最后更改为第二)的演示。

enter image description here

CSR结果。

enter image description here

将脚本编辑器Webpart插入新表单,然后将脚本插入其中。

<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>