我是在2016年本地环境中工作的新SharePoint开发人员。我一直在探索使用“标准客户端渲染”渲染模式修改列表表单的选项,但是我对如何在SPClientTemplates.TemplateManager.RegisterTemplateOverrides
方法内完成简单任务不知所措。
在NewForm.aspx
页上,我希望在默认表单的每一行中交换“描述”字段(显示在每个输入字段的下方)和“标题”字段(在左列的标签)。我可以在有问题的方法的ctx
对象中访问这些数据字段,但似乎无法编写出可以完成交换它们的解决方案。
我一直在关注Andrei Markeev关于该主题(SP CSR List Forms和SP CSR List Forms + Layout)的文章,但没有可用于演示的代码。这是我记录与交换有关的两个字段:
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
OnPreRender: function(ctx) {
console.log(ctx.ListSchema.Field[0].Description);
console.log(ctx.ListSchema.Field[0].Title);
}
});
最简单的方法是什么?
答案 0 :(得分:1)
虽然可以使用jQuery来更新DOM结构,但是不太确定您的要求是否为“交换”。
这里是将“字段注释”渲染(从最后更改为第二)的演示。
CSR结果。
将脚本编辑器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>