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
フィールドではありません。
次の例では、表示フォームの代わりにフォームを編集するために設定されたURLを使用してLinkTitle
をレンダリングする方法を示します。
(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');
})();
. 他のヒント
これを適用しようとするビューのタイトルフィールドは?実際にはタイトルフィールドの多数の亜種が存在します(たとえば、(...)メニューで)。
または2番目のコードスニペットのCTX.CurrentItemから取得した情報を使用して、別のプロパティがないかどうかを確認する
所属していません sharepoint.stackexchange