Изменение кнопки «Сохранить и закрыть» ListForm через JsLink
-
10-12-2019 - |
Вопрос
В настоящее время я портирую используемое внутри компании SP Farm-Solution с 2010 по 2013 год и борюсь с новой концепцией JsLink.
В решении 2010 года мы перезаписали RenderingTemplate
ListForm
содержать пользовательская кнопка сохранения и закрытия построенный нами.Теперь с SP2013 появились новые JsLinks, которые могли бы справиться с этим.
Я думал о создании функции с приемником событий, который при активации изменяет свойство JsLink всех типов контента в текущей сети и регистрирует наш собственный файл javascript.
Однако все учебники/записи в блогах, которые я нашел до сих пор, объясняют только «Как настроить отрисовку вашего поля с помощью JsLink», а не как изменить такие вещи, как внешний вид кнопки сохранения.
Есть ли здесь кто-нибудь, кто мог бы мне помочь?Искал уже около суток и пока не нашел ничего полезного.
Решение
Вы можете использовать событие PostRender для выполнения метода javascript после полной загрузки формы, например:
(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/office/jj220045%28v=office.15%29.aspx, вы получите дополнительную информацию и еще несколько примеров кода (например, таргетинг на определенные представления и т. д.).
Вы все равно можете прикрепить это к одному полю, и, выполнив PostRender, вы заставите его выполняться во всех рендерингах, включая это поле и т. д.
О том, как настроить JSLink только на NewForm или EditForm, см. в другом моем ответе: Настройка файла newform.aspx списка с помощью jslink в SharePoint 2013.