リストフォームを変更し、JSLinkを介してボタンを保存して閉じるボタンを変更します
-
10-12-2019 - |
質問
現在、2010年から2013年までの内部の中古SPファームソリューションを移植しており、JSlinkの新しい概念に苦しんでいます。
2010年の解決策では、RenderingTemplate
ListForm
を上書きして、カスタム保存と閉じるボタンが構築されたボタンを含んでいました。SP2013では、これを処理できる新しいJSLinksがあります。
イベント受信側の機能を作成することを考えていました。アクティブ化されたときに現在のWeb上のすべてのContentTypesのjSlinkプロパティを変更し、私たち自身のJavaScriptファイルを登録してください。
しかし私が見つけたすべてのチュートリアル/ブログエントリは、「保存ボタンの外観」のように設定を変更する方法ではなく、「フィールドのレンダリングをJSlinkでカスタマイズする方法」のみを説明しています。
ここで私を助けることができる人はいますか?もう一日を捜していて、これまでに有用なものを見つけることができませんでした。
解決
フォームが完全にロードされた後にJavaScriptメソッドを実行するには、 "Postrender"イベントを使用できます。
(function () {
// Initialize the variable that stores the objects.
var overrideCtx = {};
overrideCtx.Templates = {};
// Assign a function to handle the
// PostRender events
overrideCtx.OnPostRender = postRenderHandler;
// Register the template overrides.
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();
// The postRenderHandler attends the OnPostRender event
function postRenderHandler(ctx) {
// You can manipulate the DOM in the postRender event
var ulObj;
var i, j;
ulObj = document.getElementById("unorderedlist");
// Reverse order the list.
for (i = 1; i < ulObj.children.length; i++) {
var x = ulObj.children[i];
for (j = 1; j < ulObj.children.length; j++) {
var y = ulObj.children[j];
if(x.innerText<y.innerText){
ulObj.insertBefore(y, x);
}
}
}
}
.
これは、ここで見つかったコードの変形例です http://msdn.microsoft.com/en-us/library/ovice / jj220045%28v=オフセンド15%29.aspx 、詳細情報といくつかの詳細なコードを得る(特定のビューなどをターゲットにする例。
これを単一のフィールドに添付することができ、Postrenderを実行することで、このフィールドなどを含むすべてのレンダリングで実行することができます。
あなたのJSlinkをNewformまたはEditformにターゲティングする方法については、このその他の回答を参照してください。