CSR 中的 ctx 不返回标题
-
10-12-2019 - |
题
我需要使单击列表项标题的操作打开编辑表单,而不是查看表单。为此,我选择使用 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);
}
但我在浏览器控制台中看不到任何内容。如果我更改代码,这可以工作,但标题列不存在。
这是我编辑的代码:
(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中获得的信息在第二个代码片段中,检查是否没有其他属性,您可以使用