Как зарегистрировать событие contextmenu, если ячейка sap.ui.table имеет тип input - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь получить контекстное меню в ячейке таблицы типа input. Щелчок правой кнопкой мыши работает только в той части, которая находится за пределами поля ввода.

Есть ли способ перебросить событие из поля ввода в ячейку ниже? Также, похоже, нет события щелчка в поле ввода.

Мои попытки можно увидеть в plnkr

https://plnkr.co/edit/BMozXm7uRPNlgzUf

код:

                        <t:Table rows="{/}" visibleRowCount="100"
                        minAutoRowCount="10" visibleRowCountMode="Auto" id="table0"
                        filter="onTableFilter" class="sapUiNoMargin sapUiNoContentPadding"
                        beforeOpenContextMenu="onContextMenu">
                        <t:columns>
                            <t:Column width="4em" filterProperty="CompCode" 
                                sortProperty="CompCode" resizable="true" autoResizable="true"
                                class="sapUiLargeNegativeMarginBeginEnd"
                                click="oninputclick"
                                press="oninputclick">
                                <Label text="Comp Code" wrapping="true" class="test_maybe_he"/>
                                <t:template>
                                    <Input value="{CompCode}" class="test_maybe_he" click="oninputclick"
                                press="oninputclick"/>
                                </t:template>
                            </t:Column>

У меня есть beforeOpenContextMenu = "onContextMenu" в теге таблицы. И щелкните = "oninputclick", нажмите = "oninputclick" в теге ввода.

щелчок правой кнопкой мыши регистрируется только вне поля ввода. (В примерах sapui5 с тегом Text вроде работает.)

1 Ответ

0 голосов
/ 08 мая 2020

Я предлагаю настраиваемый элемент управления, который наследуется от sap.m.Input.

Этот элемент управления должен иметь новое событие (например, rightPress), и это событие должно запускаться, когда запускается собственное событие браузера onContextMenu . Также не должно отображаться собственное контекстное меню.

sap.ui.define([
    "sap/m/Input"
], function (Input) {
    "use strict";

    return Input.extend("gsan.ruleedit.control.MyInput", {
        metadata: {
            events: {
                rightPress: {}
            }
        },

        renderer: {},

        oncontextmenu: function(oEvent) {
            this.fireRightPress();
            oEvent.preventDefault();
        }
    });
});

Затем вы можете использовать свой настраиваемый элемент управления, как любой другой

<mvc:View xmlns:my="gsan.ruleedit.control"
    ... />

    <my:MyInput value="{CompCode}" rightPress="onContextMenu" />

Рабочий пример: https://plnkr.co/edit/XAfC7SGpdf3RxiDF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...