none
ajuda com asp em asp.net RRS feed

  • Pergunta

  • pessoal, bom dia!

    tenho um código em asp que cria uns textbox de acordo com um valor informado em tela pelo usuário.. isso eu já consegui fazer dessa forma:

    <%
    If txtNumMaquinas.Text <> "NÚMERO DE MÁQUINA(S):" Then
            For i = 1 To Convert.ToInt32(txtNumMaquinas.Text)
    %>
           M&aacute;quina <% = i %>*<br>
           <textarea name="CodDesinstala<% = i %>" rows="3" id="CodDesinstala" style="width:450px;"></textarea>
                
    <%
    	Next
    End If
    %>

    só que quando for fazer minha alteração no banco de dados, vou tratar isso no codebehind (vb.net) como que vou fazer pra pegar os valores que vão está no textbox?

    quarta-feira, 14 de agosto de 2013 19:19

Respostas

  • Você pode procurar o componente pelo nome na página. Você não especificou muito bem dentro do que eles estão, mas vou dar um exemplo genérico:

    for(int i = 0; i < numTxtAreas; i++)
    {
       HtmlTextArea txtArea = controlePai.FindControl("CodDesistala" + i);
       var valor = txtArea .Value;
       /*Salvar*/
    }

    ControlePai seria o componente em que seus controles estão, podendo ser um Panel, etc. Por exemplo, se eles estiverem dentro do form, você usaria Form.FindControl.

    Ou

    foreach(Control control in controlePai.Controls)
    {
       if(control is HtmlTextArea)
       {
         var valor = ((HtmlTextArea )txtArea).Value;
        /*Lógica para Salvar aqui*/
       }
    }

    Você deve adicionar o namespace  System.Web.UI.HtmlControls a sua classe.


    quarta-feira, 14 de agosto de 2013 19:55
  • coloquei um text box normal no lugar do textarea

    <%
    
        If txtNumMaquinas.Text <> "NÚMERO DE MÁQUINA(S):" Then
            For i = 1 To Convert.ToInt32(txtNumMaquinas.Text)
    %>
                    M&aacute;quina <% = i %>*<br />
            <%--<textarea name="CodDesinstala<% = i %>" id="CodDesinstala<% = i %>" cols="0"  rows="0" style="width:430px;"></textarea>--%>
            <asp:TextBox ID="txtNumMaq" runat="server" style="width:430px;"></asp:TextBox>
                    
                
    <%
    Next
    		End If
    %>

    ele gera todos os textbox com o mesmo nome, logo nessa linha

    Dim txtCodDesin As TextBox = divDadosSim.FindControl("txtNumMaq")
    strCodDesinstalacao = txtCodDesin.Text

    ele pega todos os valores dos texbox separados por virgula.. dai fiz meus tratamentos...

    • Marcado como Resposta kngipa terça-feira, 20 de agosto de 2013 20:34
    terça-feira, 20 de agosto de 2013 20:34

Todas as Respostas

  • Adicione a propriedade runat="server" ao seu tetxarea.

    Após você criar o textarea, é só usar o id, para pegar o valor

    var valor = CodDesinstala.Text

    quarta-feira, 14 de agosto de 2013 19:25
  • mas o textarea só serão criados após execução do projeto.. ou seja.. posso ter o primeiro id do textarea inicial, mas se forem criados 5 enquanto executa, não sei o nome deles, logo não consigo pegar os valores pelo nome dele, não...?
    quarta-feira, 14 de agosto de 2013 19:31
  • Você pode procurar o componente pelo nome na página. Você não especificou muito bem dentro do que eles estão, mas vou dar um exemplo genérico:

    for(int i = 0; i < numTxtAreas; i++)
    {
       HtmlTextArea txtArea = controlePai.FindControl("CodDesistala" + i);
       var valor = txtArea .Value;
       /*Salvar*/
    }

    ControlePai seria o componente em que seus controles estão, podendo ser um Panel, etc. Por exemplo, se eles estiverem dentro do form, você usaria Form.FindControl.

    Ou

    foreach(Control control in controlePai.Controls)
    {
       if(control is HtmlTextArea)
       {
         var valor = ((HtmlTextArea )txtArea).Value;
        /*Lógica para Salvar aqui*/
       }
    }

    Você deve adicionar o namespace  System.Web.UI.HtmlControls a sua classe.


    quarta-feira, 14 de agosto de 2013 19:55
  • eu não estou conseguindo pegar o valor..

    vejam como está..

    Dim txtCodDesin As HtmlTextArea = divDadosSim.FindControl("CodDesinstala" & (intCont + 1))
    
    strCodDesinstalacao = strCodDesinstalacao & txtCodDesin.Value & "<br /><br />"

    quando vou ver o que veio para o txtCodDesin ele está igual a "Nothing"

    terça-feira, 20 de agosto de 2013 19:09
  • acho que o problema está por ser um textarea.. pois fiz um teste em localizar dentro dessa mesma div um Label, e deu certo...
    terça-feira, 20 de agosto de 2013 20:11
  • coloquei um text box normal no lugar do textarea

    <%
    
        If txtNumMaquinas.Text <> "NÚMERO DE MÁQUINA(S):" Then
            For i = 1 To Convert.ToInt32(txtNumMaquinas.Text)
    %>
                    M&aacute;quina <% = i %>*<br />
            <%--<textarea name="CodDesinstala<% = i %>" id="CodDesinstala<% = i %>" cols="0"  rows="0" style="width:430px;"></textarea>--%>
            <asp:TextBox ID="txtNumMaq" runat="server" style="width:430px;"></asp:TextBox>
                    
                
    <%
    Next
    		End If
    %>

    ele gera todos os textbox com o mesmo nome, logo nessa linha

    Dim txtCodDesin As TextBox = divDadosSim.FindControl("txtNumMaq")
    strCodDesinstalacao = txtCodDesin.Text

    ele pega todos os valores dos texbox separados por virgula.. dai fiz meus tratamentos...

    • Marcado como Resposta kngipa terça-feira, 20 de agosto de 2013 20:34
    terça-feira, 20 de agosto de 2013 20:34