Редактирование меню действия строки в APEX Interactive Grid

Как изменить доступные параметры в части Выбор меню Действия со строкой в Apex?

Мне удалось изменить параметры в Меню строки, но я все еще пытаюсь изменить что-либо в Меню выбора.

Меню выбора слева и линейное меню справа

введите описание изображения здесь


person AWildmann    schedule 09.10.2018    source источник


Ответы (5)


вы можете попробовать что-то вроде этого:

  • Добавить этот код при выполнении при загрузке страницы на уровне свойства

   

 $(function() {
    // Add new Element in the selection action menu
    $("#emp_ig_selection_actions_menu").menu("option").items.push({
            type: "action",
            id: "irHello",
            hide: false,
            label: 'hello world',
            icon: 'fa fa-home',
            action: function() {
                alert("hello world");
            }
        });
    
 // Disable Items in the Menu  
 apex.region("emp").widget().interactiveGrid("getActions").disable("selection-duplicate");
        
 apex.region("emp").widget().interactiveGrid("getActions").disable("selection-revert");
    });

Чтобы понять, как работает виджет меню, просмотрите здесь https://docs.oracle.com/database/apex-18.2/AEXJS/menu.html

введите описание изображения здесь

введите описание изображения здесь

Демо: https://apex.oracle.com/pls/apex/f?p=28835:2

person alli pierre yotti    schedule 10.10.2018
comment
Новые настраиваемые параметры я смог реализовать здесь, хотя во второй части кода с отключением я не был. Я также проверил поиск элементов в демо-приложении, которое вы опубликовали, и мне удалось найти свой настоящий идентификатор региона, который выглядит примерно так: // Disable Items in the Menu apex.region("ig_gid").widget().interactiveGrid("getActions").disable("selection-duplicate"); - person AWildmann; 12.10.2018
comment
OK. здесь вы можете посмотреть, как работает виджет меню docs.oracle .com / database / apex-18.2 / AEXJS / menu.html. - person alli pierre yotti; 12.10.2018
comment
Извините, если я звучу невежественно, но я не могу найти решение, прочитав документацию по виджетам. Я предполагал, что при адаптации кода функция, которую я хочу удалить, будет удалена. Должен ли я создать свою собственную интерактивную сетку с этими параметрами, чтобы потом можно было отключить ее? Это будет лучшая идея? - person AWildmann; 12.10.2018
comment
Что именно вы хотите удалить? пожалуйста, дайте более подробную информацию? - person alli pierre yotti; 12.10.2018
comment
Я хотел бы иметь возможность удалить такие параметры, как в вашем коде, дубликат выбора и тому подобное. Я смог добавить больше кнопок с помощью кода, но удаление просто не сработает. Я также пробовал использовать отключенную опцию с индексами меню, но это тоже не сработало. Я не понимаю, почему код не работает, учитывая, что у меня правильные идентификаторы IG. Чтение документации по виджетам не было ничего, поэтому и спросил. - person AWildmann; 15.10.2018
comment
Вы можете показать мне свой Кодекс, как вы это сделали? вы должны запустить его в $ (function () {}); - person alli pierre yotti; 15.10.2018
comment
Это была та часть, которая не сработала: apex.region("ig_gid").widget().interactiveGrid("getViews").disable("selection-duplicate"); apex.region("ig_gid").widget().interactiveGrid("getViews").disable("selection-delete"); - person AWildmann; 15.10.2018
comment
Попробуйте выполнить это при загрузке страницы $ (function () {apex.region (emp) .widget (). InteractiveGrid (getActions) .disable (selection-duplicate); apex.region (emp) .widget (). InteractiveGrid (getActions) ) .disable (выделение-удаление);}); // emp - статический идентификатор GRID - person alli pierre yotti; 15.10.2018

Я нашел решение для редактирования, которое хотел. Поделитесь им здесь для тех, кто тоже может захотеть им воспользоваться.

function(config) {
    config.initActions = function( actions ) {
        // löscht die Option "Single Row-Ansicht"
        actions.remove("single-row-view");
        actions.remove("selection-duplicate");
        actions.remove("selection-refresh");
    };
    return config;
}

Используя действие remove, а не widget.disable, я смог удалить поля из Меню выбора, которые я хотел изменить.

введите описание изображения здесь

Изменить: есть несколько новых опций, которые, похоже, добавил APEX 18.2. Вот коды, которые я нашел до сих пор, которые их отключают. Те, которые я до сих пор не понял, как удалить, - это опции «Заливка» и «Очистить». Надеюсь, это будет полезно всем, кто пытается избавиться от этих опций.

Код, ориентированный на первые два показанных здесь варианта:

actions.remove("selection-copy");
actions.remove("selection-duplicate");

Я попытался использовать префикс «выбор» для параметров заполнения и очистки, но безуспешно. Если кто-нибудь знает их коды, дайте мне знать.

введите описание изображения здесь

person AWildmann    schedule 22.10.2018

Я тоже новичок. Так декоративно я смог полностью удалить параметры строки «Строка действия», выбрав: - Конструктор страницы -> Тело содержимого -> APEX $ Row_Action-> ПЕРЕЙТИ К правой стороне -> безопасность -> Схема авторизации -> {Not 'роль, которая имеет доступ к странице'Rights}

Для панели инструментов я использовал уже обнаруженный хак, который я ввел в область кода инициализации Java в разделе Атрибуты:

function(config) {
  var $ = apex.jQuery;
  var toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(); 
  toolbarData.splice(5,3);
  //remove actions button
  config.autoAddRow = false;
  config.toolbarData = toolbarData;
  return config
}
person ShivCOT    schedule 05.03.2019
comment
Это интересная возможность для будущих требований. Я действительно изучил изменения, которые у меня были раньше, учитывая, что моя версия APEX была обновлена ​​до 18.2, и там есть множество новых опций. Я ищу их ярлыки. Предыдущие удаленные функции, которые я использовал в решении, все еще работают, но теперь я хотел бы узнать ярлыки новых. - person AWildmann; 06.03.2019

Я получил возможность опустить пункты меню «Заполнить» и «Очистить» (плюс любые другие, которые вы пожелаете), объединив решения alli pierre yotti и AWildmann, т.е. я сделал именно то, что Alli Pierre Yotti предлагает, но заменил метод disable () на метод remove (), как указано в AWildmann.

Итак, вот код, который я поместил в атрибут «Выполнять при загрузке страницы» на уровне страницы. Я также заменил зашитое имя региона в кавычках на переменную, чтобы упростить будущие изменения статического идентификатора региона, а также упростить копирование этого кода на другие страницы, но это не влияет на решение.

$(function() {

  regionStaticId = "emp"

  apex.region(regionStaticId).widget().interactiveGrid("getActions").remove("selection-duplicate");

  apex.region(regionStaticId).widget().interactiveGrid("getActions").remove("selection-copy");

  apex.region(regionStaticId).widget().interactiveGrid("getActions").remove("selection-fill");

  apex.region(regionStaticId).widget().interactiveGrid("getActions").remove("selection-copy-down");

   apex.region(regionStaticId).widget().interactiveGrid("getActions").remove("selection-clear");

});

Благодаря первоначальным разработчикам решения, я внес лишь поверхностный вклад.

Я не публиковал сообщения в stackoverflow раньше, поэтому извиняюсь, если я должен разметить ссылки на других участников особым образом.

person michealoriain    schedule 28.01.2021

Чтобы скрыть параметры уровня строки (в данном случае «Удалить запись»), я использую следующий CSS:

[id $ = 'ig_row_actions_menu_5']. a-Menu-item, li [id $ = 'ig_row_actions_menu_5'] + .a-Menu-itemSep {display: none}

person Igor Kortchnoi    schedule 29.04.2019