Navegação

    Fórum Técnico Insoft4

    • Login
    • Pesquisar

    Abordagem de FileButton como menuitem de um botão

    Desenvolvimento
    1
    1
    12
    Carregando Mais Posts
    • Mais Antigo para Mais Recente
    • Mais Recente para Mais Antigo
    • Mais Votados
    Responder
    • Responder como tópico
    Entre para responder
    Este tópico foi deletado. Apenas usuários com privilégios de moderação de tópico podem vê-lo.
    • G
      gustavo_siqueira Desenvolvimento última edição por

      O FileButton do ExtJS é um botão utilizado para a escolha de arquivos no computador do usuário. Quando utilizado em uma toolbar possui o layout de um botão convencional.

      Entretanto, poderá haver casos onde este componente precisará estar configurado como um menuitem de um botão, acompanhado de outras opções. Nessa ocasião, somente adicionar o FileButton como um xtype gerará um layout estranho:

      b5f4b50f-81aa-4234-94fb-731dcc0f9f70-image.png

      Agora, utilizando uma abordagem um pouco diferente, é possível obter a mesma funcionalidade de escolha de arquivo, porém clicando em um menuitem padrão:

      74da48f4-08b9-4223-bccc-e899b4056726-image.png

      Código da abordagem:

      Dentro da view, adicionar um menuitem que será exibido como o botão de upload desejado. Em seguida, adicionar um filebutton oculto dentro do mesmo contexto:

      ...
      xtype: "toolbar",
      dock: 'bottom',
      items: [{
          text: 'Anexos',
          iconCls: 'icon-attachment',
          menu: [{
              text: 'Adicionar anexo',
              itemId: 'adicionarAnexo',
              iconCls: 'icon-new',
          }, {
              text: 'Baixar anexos',
              itemId: 'baixarAnexos',
              iconCls: 'icon-down',
          },{
              hidden:true,
              xtype: 'filebutton',
              itemId: 'fileButtonAdicionarAnexo',
              text: 'Adicionar Anexo'
          }]
      }],
      ...
      

      Agora, no controller, adicionar o listener de click no menuitem desejado e o evento de change no filebutton oculto.

      O evento de click no menuitem irá obter o fileinput do filebutton e será acionado seu próprio método de click. Por fim, para coletar o arquivo selecionado pelo usuário é necessário acessar o fileinput e acessar o arquivo armazenado nele:

      'window #adicionarAnexo': {
          click: 'onClickAdicionarAnexo'
      },
      'window #fileButtonAdicionarAnexo': {
          change: 'onSelectFile'
      },
      ...
      
      onClickAdicionarAnexo: function () {
        var me = this,
          view = me.getView();
        view.down('#fileButtonAdicionarAnexo').fileInputEl.dom.click();
      },
      
      onSelectFile: function (_this) {
          var me = this,
              arquivo = document.getElementById(_this.fileInputEl.id).files[0];
          if (arquivo) {
              ...
          }
      },
      
      ...
      
      1 Resposta Última resposta Responder Citar 3
      • Primeiro post
        Último post
      Powered by NodeBB | Contributors