1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Adicionar controlos com document.write

Discussão em 'Web Development' iniciada por mendex, 26 de Setembro de 2007. (Respostas: 3; Visualizações: 828)

  1. mendex

    mendex Power Member

    Olá

    Estou a fazer em ASP.NET com C# uma espécie de wizard.

    Para tal tenho uma página e vários usercontrols, pretendendo mostrar apenas um dos usercontrols de cada vez.

    Assim tenho

    Código:
    <script type="text/javascript"> 
    var step = "<%=Session["step"]%>"
      alert(step);
      if (step)
      {
        document.write("<uc:step1 id="step1" runat="server" />")
      }
      else
      {
        document.write("<uc:step2 id="step2" runat="server" />")
      }
    }
    </script>
    O problema é que não me aparece nada, nem o alert(step);

    Mas se puser document.write(passo1) e document.write(passo2), ou seja se não criar controlos funciona.

    Alguma sugestão?
     
  2. Ignoto_Deo

    Ignoto_Deo Power Member

    não podes criar controlos dessa forma, por isso é que não funciona
     
  3. mendex

    mendex Power Member

    Bem, se isto não é possível, a alternativa que vejo é ter todos os passos numa mesma página e esconder os que não interessarem.

    o que tenho é

    Código:
    <script type="text/javascript"> 
    var step = "<%=Session["step"]%>"
      alert(step);
      if (step == 1)
      {
        document.getElementById("tr_step1").style.display = "none"
      }
      else
      {
        document.getElementById("tr_step2").style.display = "none"
      }
    }
    </script>
    
    <table id="table_form" class="table_form" cellspacing="0" cellpadding="0" border="0">
      <tr id="tr_step1">
        <td>
          <uc:step1 id="step1" runat="server" />
        </td>
      </tr>
      <tr id="tr_step2">
        <td>
          <uc:step2 id="step2" runat="server" />
        </td>
      </tr>
    </table>
    só não sei fazer com que este código seja executado quando a página abre.
     
    Última edição: 26 de Setembro de 2007
  4. mendex

    mendex Power Member

    Resolvido,

    embora de uma maneira que não considere a mais correcta. No Page_Load chamo uma função que apenas deixa visível o apsso actual.

    Código:
    public static void ShowWizardStep(Page page, int step)
            {
                string stepId = "step" + step;
                Control form = Global.GetControlById(page.Controls, "form");
                Control wizard = Global.GetControlById(form.Controls, "wizard");
    
                foreach (Control ctrl in wizard.Controls)
                {
                    if (!String.IsNullOrEmpty(ctrl.ID) && ctrl.ID.StartsWith("step"))
                        ctrl.Visible = (ctrl.ID == stepId);
                }
            }
    Obrigado Ignoto_Deo, estava a insistir num caminho sem saída...
     

Partilhar esta Página