Кастомизация
09
Дек
0

Дополнительные кнопки на вложенном Представлении

Раньше, когда трава была зеленая, а Солнце ярче… каждое вложенное Представление на форме сопровождалось своими кнопками. Это позволяло при необходимости выполнять дополнительные операции над записями. Сейчас же для этого в лучшем случае приходится переходить на связанные записи – только там можно выделить записи и нажать кнопку. Сам же сабгрид в лучшем случае сопровождается одиноким плюсиком.

Добавим ему кампанию 🙂

  • Создайте два веб-ресурса с рисунками 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"); }
    );
    

    З.Ы. Вызывая таким образом функцию Вы можете добавить множество кнопок слева от плюсика.


Комментарии (0)

*

code