none
Programando eventos em formulários dinâmicos RRS feed

  • Pergunta

  • Boa tarde pessoal, tudo bem?

    Estou gerando um web form utilizando arquivos de XML e XLS.

    De forma bem simples o XML que gera a página ASP e depois que o browser carrega os dados XML, em seguida, recupera a folha de estilo XSL para formatar a saída.

    Porém eu gostaria de criar eventos de filtro para controles do tipo dropdownlist.

    Um exemplo básico pode ser uma estrutura de endereço, onde possuímos os controles de País, Estado e Cidade.

    Ao selecionar a ddl de país, a ddl de estado deveria ser filtrada apenas com estados para o país selecionado.

    A estrutura é parecida com o seguinte código, não idêntica apenas para preservar o source:

      <xsl:element name="asp:{@type}">
               <xsl:attribute name="runat">server</xsl:attribute>
               <xsl:for-each select="./PROPERTIES/PROPERTY">
                 <xsl:attribute name="{@name}">
                   <xsl:value-of select="current()"></xsl:value-of>
                 </xsl:attribute>
               </xsl:for-each>
               <xsl:for-each select="./LISTITEMS/LISTITEM">
                <asp:ListItem value="{@value}">
                  <xsl:value-of select="current()"></xsl:value-of>
                </asp:ListItem>
               </xsl:for-each>
              </xsl:element>

    XML:

    <FIELD type="DropDownList" label="Title:">
              <PROPERTIES>
                <PROPERTY name="ID">TITLE</PROPERTY>
              </PROPERTIES>
              <LISTITEMS>
                <LISTITEM value="">Favor selecione...</LISTITEM>
                <LISTITEM value="1">Brasil</LISTITEM>
                <LISTITEM value="2">Estados Unidos</LISTITEM>
                <LISTITEM value="3">Canadá</LISTITEM>
                <LISTITEM value="4">Austrália</LISTITEM>
                [...]
              </LISTITEMS>
            </FIELD>

    A dúvida é, como programar os eventos de uma ddl que deve ser filha de outra ddl?

    Obrigado e boa tarde a todos.
    • Editado Dobereiner segunda-feira, 19 de dezembro de 2011 18:45 O post está ficando com um formato ilegível.
    • Movido Levi DomingosModerator domingo, 25 de dezembro de 2011 23:02 (De:C#)
    segunda-feira, 19 de dezembro de 2011 18:40

Respostas

  • Dobereiner,

    Acredito o modo mais fácil seja colocar um javascript controlando os eventos dos objetos.

    O conteúdo de sua página é muito dinâmico, e código compilado não é o ideal, o melhor mesmo é aproveitar que vc constrói o conteúdo das páginas em runtime e adicionar um javascript para que os objetos se comuniquem.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    segunda-feira, 19 de dezembro de 2011 22:26

Todas as Respostas

  • Dobereiner,

    Acredito o modo mais fácil seja colocar um javascript controlando os eventos dos objetos.

    O conteúdo de sua página é muito dinâmico, e código compilado não é o ideal, o melhor mesmo é aproveitar que vc constrói o conteúdo das páginas em runtime e adicionar um javascript para que os objetos se comuniquem.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    segunda-feira, 19 de dezembro de 2011 22:26
  • Boa tarde Fernando, tudo bem?

    Eu concordo com o javascrip ser fácil, porém era exigência do cliente o xsd. Sobre código compilado, não é bem assim que o xml/xsd é interpretado pelo navegador.

    Na verdade eu tenho alguns ciclos de cpu economizadas com este método de execução, já que quem interpreta é o browser. Mas foi possível resolver o problema usando um xls attribute alimentado sob um evento disparado.

    Obrigado,

     


    Se sua dúvida foi solucionada marque-a, e, aproveite para divulgar o novo fórum do msdn.
    sexta-feira, 23 de dezembro de 2011 18:52