Дополнительные кнопки на вложенном Представлении
Раньше, когда трава была зеленая, а Солнце ярче… каждое вложенное Представление на форме сопровождалось своими кнопками. Это позволяло при необходимости выполнять дополнительные операции над записями. Сейчас же для этого в лучшем случае приходится переходить на связанные записи – только там можно выделить записи и нажать кнопку. Сам же сабгрид в лучшем случае сопровождается одиноким плюсиком.
Добавим ему кампанию 🙂
- Создайте два веб-ресурса с рисунками 16х16: один для обычного состояния кнопки и один для наведенного курсора мыши.
- Создайте JS Веб-ресурс с таким кодом:
- Эта функция рисует рядом с плюсиком дополнительные кнопки. Принимает на входе следующие параметры:
function createButton(grid, buttonName, buttonTooltip, buttonImage, buttonImageHover, callback) { var dom = (Xrm == undefined || Xrm.Internal == undefined || Xrm.Internal.isTurboForm() == undefined || Xrm.Internal.isTurboForm() == false) ? document : parent.document; var button = dom.getElementById(grid + "_addImageButton"); if (button == null || button.parentNode == null || button.parentNode.parentNode == null) return; var tooltip = ""; if (buttonTooltip != null && buttonTooltip.length > 0) tooltip = " title='" + buttonTooltip + "' alt='" + buttonTooltip + "' "; var div = dom.createElement("div"); div.className = "ms-crm-contextButton"; div.innerHTML = "<a href='#' id='" + buttonName + "' style='display:block;cursor:pointer;'" + tooltip + "><img id='" + buttonName + "Image' src='" + buttonImage + "'" + tooltip + "></a>"; button.parentNode.parentNode.appendChild(div); if (buttonImageHover != null) { dom.getElementById(buttonName).onmouseover = function () { dom.getElementById(buttonName + "Image").src = buttonImageHover; } dom.getElementById(buttonName).onmouseout = function () { dom.getElementById(buttonName + "Image").src = buttonImage; } } dom.getElementById(buttonName).onclick = callback; }
- Название сабгрида.
- Название, которое будет присвоено новой кнопке.
- Подсказка, которая будет отображаться при наведении на кнопку курсора мыши.
- Относительный путь к веб-ресурсу с иконкой кнопки в состоянии покоя (обычно серого цвета).
- Относительный путь к Веб-ресурсу с иконкой кнопки при наведении мыши (обычно черного цвета).
- JS функция, которая будет вызвана при клике на новую кнопку.
- Ну и запилите вызов этой функции на онлоаде. Примерно так:
createButton( "Contacts", "btnDuck", "Duck", "../WebResources/new_duck.png", "../WebResources/new_duck_hover.png", function () { alert("Duck Duck"); } );
З.Ы. Вызывая таким образом функцию Вы можете добавить множество кнопок слева от плюсика.