Duvida com Combo-box webspeed

Discussão em 'WebSpeed' iniciado por erickles, Setembro 4, 2009.

  1. erickles

    erickles Membro Participativo

    Olá pessoal,

    O que eu precisava agora, é que ao selecionar um valor em um Combo-Box, um outro combo-box seja preenchido de acordo com o que foi selecionado no ComboBox anterior. Por exemplo, selecionei no combobox1 um estado (São Paulo), e no combobox2 apareceria as cidades deste estado. Alguém sabe como eu poderia fazer isso?
  2. alexfowler

    alexfowler Membro Participativo

    Bom, ai voce vai ter que preencher dinamicamente via javascript, algo parecido com o que primeiro codigo que eu te passei no exemplo anterior, faz.

    Voce cria variavies com cidades para cada estado, separados por "," por exemplo, e entao quando o usuario escolher o valor no combo1, voce preenche o combo2 via javascript, com a variavel de acordo com o estado selecionado.
  3. erickles

    erickles Membro Participativo

    HUmm, certo, mas como eu faria para a função ser executada após a seleção do estado? Não entendo muito de javascript...
  4. alexfowler

    alexfowler Membro Participativo

  5. Agnaldo

    Agnaldo Membro Ativo

    Erickles, de uma olhada no Google sobre Ajax, facilita bastante a vida para essas situações.
    Aqui um exemplo simples, usando a API Ajax do StarWeb FrameWork.
    Tais exemplos usam dados da base sports.

    Nesse limk podes ver o programa rodando.
    http://starweb-software.no-ip.info:8000 ... exemplo030

    Parte da tela
    Código:
    /* 
     *
     * StarWeb FrameWork (starweb@starweb-software.com.br)
     *
     * Programa exemplo030.p
     *    Faz uma chamada para exemplo030-resp.p
     *    Necessita de um banco baseado no sports conectado.
     *    Popula dinamicamente um combo-box
     *
     */ 
    
    
    /* *** Include com a lógica CGI do StarWeb FrameWork *** */
    {cgi/cgi-cgi.i}
    
    /* *** Gera o header html *** */
    output-content-type("text/html").
    
    /* *** Desenha a página html *** */
    {&out} '<html>' SKIP
           '<head>' SKIP
           '<title>StarWeb FrameWork - Exemplo030</title>' SKIP
           '</head>' SKIP.
    
    {&out} '<script language="Javascript" src="/starweb/swfw/js/swfwAjax.js"> </script>' SKIP.
    
    {&out} '<body>' SKIP
           'Exemplo030' SKIP
           '<hr>' SKIP.
    
    {&out} '<div align="center">' SKIP
           '   <form method="post" name="form" action="exemplo030">' SKIP
           '      <table border="0" cellpadding="1" cellspacing="1">' SKIP
           '         <tr>' SKIP
           '            <td align="center">Representante</td>' SKIP
           '            <td align="center">Clientes que atende</td>' SKIP
           '         </tr>' SKIP 
           '         <tr>' SKIP
           '            <td>' SKIP                       
           '               <select name="representante" size="9" onChange="ajaxPopulaCampo(~'~',~'~',form.cliente,~'exemplo030-resp?codigo=~' + this.value,~'Pesquisando ...~',~'sim~',~'~',~'~',~'~')">' SKIP.
    FOR EACH SalesRep NO-LOCK:
        {&out} '                  <option value="' SalesRep.Sales-Rep '">' SalesRep.Rep-Name '</option>' SKIP.
    END.
    {&out} '               </select>' SKIP
           '            </td>' SKIP                           
           '            <td>' SKIP
           '               <select name="cliente" id="cliente" size="9" style="width:200px">' SKIP
           '               </select>' SKIP
           '            </td>' SKIP
           '         </tr>' SKIP.
    
    {&out} '      </table>' SKIP
           '   </form>' SKIP
           '</div>' SKIP.
    
    
    /* *** Fecha a página html *** */
    {&out} '</body>' SKIP
           '</html>' SKIP.

    Parte do servidor que dá a resposta
    Código:
    /* 
     *
     * StarWeb FrameWork (starweb@starweb-software.com.br)
     *
     * Programa exemplo030-resp.p
     *
     * Gera uma resposta XML para exemplo030.p
     *
     */ 
    
    DEFINE VARIABLE retorno AS CHARACTER.
    DEFINE VARIABLE codigo  AS CHARACTER.
    
    /* *** Include com a API do StarWeb FrameWork *** */
    { cgi/cgi-cgi.i &carregarSuportePara="XML"}
    
    
    /* *** Gera o header apropriado *** */
    output-content-type(ajax-CabecalhoDeRetorno()).
    
    ASSIGN codigo = GET-VALUE("codigo").
    
    ajax-AbrirComboBox().
    IF CAN-FIND(FIRST Customer WHERE Customer.Sales-Rep = codigo)
       THEN
           FOR EACH Customer WHERE Customer.Sales-Rep = codigo NO-LOCK BREAK BY Customer.Name:
               IF FIRST(Customer.Name)
                  THEN
                      ajax-ItemDoComboBox(STRING(Customer.Cust-Num),Customer.Name,YES).
                  ELSE
                      ajax-ItemDoComboBox(STRING(Customer.Cust-Num),Customer.Name,NO).
           END.
       ELSE
           ajax-ItemDoComboBox("","Nenhum Disponivel",NO). 
    ajax-FecharComboBox().

Compartilhe esta Página