AXForum  
Вернуться   AXForum > Блоги > CRM, SharePoint и Черная Магия
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
  • Консалтинг
  • Проектирование
  • Разработка
  • Обучение


MVP 2010, 2011
Оценить эту запись

Полезный Popup. Часть 2. Системная библиотека popup

Запись от Артем Enot Грунин размещена 30.03.2010 в 11:27

В своем прошлом посте я сделал некую попытку реализовать удобный графический интерфейс, упрощающий заполнение полей формы, данными из связанных записей. Пример изначально был ограничен конкретной задачей, которая приследовалась при разработке прототипа (ввод номеров телефонов на форму Звонка), однако позже пришло понимание, что библиотеку следует делать универсальной - под любые задачи. В идеале код должен принимать некоторые настройки, на основании которых отображать popup с возможными для конкретного поля опциями: нечто вроде CRM Lookup Preview, но полезный: не только показать данные, но и использовать! В процессе разработки я наткнулся на полезные системные классы, которые позволяют решить эту задачу "в первом приближении", чего в некоторых случаях вполне достаточно.

В каталоге сервера \CRMWeb\_static\_controls\PopupMenu находится полезная системная библиотека popupmenu.js. В частности она используется в ambiguous-лукапах (имеется несколько вариантов) и для генерации выпадающих меню. Использование:
Код:

// Обработчики событий меню
_accTelClick = function()
{
    alert("Телефон!");
}

_contFaxClick = function()
{
    alert("Факс!");
}

_moreClick = function()
{
    alert("Еще!");
}


// Базовый объект popup
var oPopupMenu = new PopupMenu();

// Заголовок 1 раздела меню
oPopupMenu.AddNotification("Опции для организации", "/_imgs/ico_16_1.gif");

// Опция 1
oPopupMenu.AddMenuItem("Показать телефон", _accTelClick, 0, "/_imgs/ico_16_4210.gif");

// Разделитель
oPopupMenu.AddSeperator();

// Заголовок 2 раздела меню
oPopupMenu.AddNotification("Опции для контакта", "/_imgs/ico_16_2.gif");

// Опция 2
oPopupMenu.AddMenuItem("Показать факс", _contFaxClick, 0, "/_imgs/ico_18_4204.gif");

// Разделитель
oPopupMenu.AddSeperator();

// Дополнительная сслыка
oPopupMenu.AddMoreLink("Еще!", _moreClick, 0, "/_imgs/icn_help16.png");

// Отображение меню:
oPopupMenu.Show(512, 384, null, null);
Код можно вставить, например, на событие загрузки формы. Результат выполнения выглядит так:

Название: popupmenu.JPG
Просмотров: 556

Размер: 12.6 Кб

Синтаксис функций, я думаю, не должен вызывать вопросов. В обработчик так же передается event, поэтому если возникнет необходимость использовать одну функцию для некольких элементов меню, то вы можете вычислить порядковый номер выбранного элемента следующим образом:
Код:
_masterOnClick = function(oEvent)
{
    var oMItem = oEvent.srcElement;

    while (oMItem.name != "menuItem")
    {
        oMItem = oMItem.parentElement;
    }
        
    var oMenuID = oMItem.menuID;

    // дальнейшая обработка события
}
Исходный код библиотеки небольшой и достаточно внятный. В случае необходимости в расширении вы легко сможете копировать его в свое решение и дополнить. В основном это может потребоваться для того, чтобы избавить себя от возни со стилями.

Разумеется использование системных функций - неподдержиаеммое решение. Используйте на свой страх и риск.
Размещено в CRM
Просмотров 20158 Комментарии 0
Всего комментариев 0

Комментарии

 


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:39.