Avalados por :

Problema de arrastar e soltar no SAP HANA: solução com jQuery e sap.ui.ux3.shell

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Cargando...

Olá a todos,

Estou enfrentando o mesmo problema que o Samba no Centro de Desenvolvimento do SAP HANA http://scn.sap.com/thread/3480868 .

Tentei usar funções de arrastar e soltar usando jQuery. Sem o sap.ui.ux3.shell tudo funciona bem. Mas quando coloco o conteúdo da página em um shell, o arrastar e soltar não funciona mais.


<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
        <script src="resources/sap-ui-core.js"
                id="sap-ui-bootstrap"
                data-sap-ui-libs="sap.ui.commons, sap.ui.table, sap.ui.ux3"
                data-sap-ui-theme="sap_goldreflection">
       
        </script>
        <script type="text/javascript" src="js/commons.js"></script>
        <script type="text/javascript" src="js/model.js"></script>         <!-- gateway access -->
        <script type="text/javascript" src="js/filter.js"></script>
       
        <!-- add sap.ui.table,sap.ui.ux3 and/or other libraries to 'data-sap-ui-libs' if required
        <link rel="stylesheet" type="text/css" href="css/custom.css">
       
        <script>
       
        $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-core'); 
        $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-widget'); 
        $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-mouse'); 
        $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-draggable');
        $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-droppable'); 
        $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-sortable'); 

......
......
var oShell =    
            
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá Ramesh,

Obrigado pela sua resposta.

No método "onBeforeRendering", desvinculo os eventos. Você pode usar $( "#oWInputLayout .sapUiVltCell" ).unbind(), mas tenho lido sobre problemas com desvinculação geral. O método preferido é especificar os eventos que deseja desvincular.

Então minha solução foi desvincular todos os possíveis eventos de arraste:

$( "#oWInputLayout .sapUiVltCell" ).unbind("draginit dragstart drag dragend");

Espero ter ajudado.

Saudações

Kai

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Kai,

°Boa ideia! Você pode publicar o que escreveu em "onBeforeRendering" para desvincular o arrastável? É apenas "†† $( "#oWInputLayout .sapUiVltCell" ).draggable('disable')††† "?


Saudações,

Ramesh

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Bom trabalho

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá a todos!

Hoje encontrei a solução na documentação:

SAPUI5 SDK - Demo Kit

        
            A inscrição do evento deve ser feita no método onAfterRendering do Controle, então o vínculo do evento é repetido sempre depois que o controle é renderizado novamente (novos elementos DOM são criados e os antigos são descartados). Além disso, para evitar vazamentos de memória, o vínculo do evento deve ser removido (com jQuery.unbind()) no método "onBeforeRendering" e no método "exit" (que é chamado antes do Controle ser destruído).
        
    

Portanto, no meu caso, coloquei o seguinte na função onAfterRenderin do controlador correspondente:

        
            onAfterRendering: function() {
                //Wareneingang
                //Permitir arrastar e soltar, o escopo regula para onde pode ser arrastado, aqui também podem ser carregadas funções, por exemplo: start:function() { //fazer algo }.
                $(function() {
                    $("#oWInputLayout .sapUiVltCell").draggable({handle: "#oWInputLayout .sapUiVltCell .sapUiLbl", appendTo: 'body', zIndex: 1500, containment: 'DOM', revert: 'invalid', helper: 'clone', addClasses: false, scope: "Create-TA"
                    });
                });
                $(function() {
                    $("#oWTaLayout").droppable({scope: "Create-TA"});
                });
                //...
            }
        
    

Espero que isso ajude.

Kai

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?