Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tiago Cardoso

[Resolvido] Resgatar "N" campos em um form C#

Recommended Posts

Boa noite amigos,

 

Estou precisando de saber como faço para resgatar n campos de um form, pois estes campos são criados dinamicamente e não tenho como saber a quantidade exata e os ids...

Pensei em armazenar em hidden a quantidade total de campos, mas mesmo assim não sei como resgatá-los em C#...

 

Agradeço desde já...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo só que tem um porém, são elementos html, pois tive que criar em javascript e são inputs, até encontrei um script que resgata os campos, porém não consegui aplicá-lo, vejam:

 

foreach (Control campo in this.Controls)
{
	Response.Write((campo as HtmlInputText).ID);
	Response.Write((campo as HtmlInputText).Value);
}

Onde está o erro?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está em Resgatar HTML com C#, como faço isso?

 

Tentei assim:

 

Request["nome_do_campo"];
//
nome_do_campo.Value;
//
nome_do_campo.Text;

Até com FIND eu tentei e não deu certo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você estava pelo caminho certo, ao utilizar a classe request, só esqueceu de acessar htmlcontrols através da propriedade Forms.

 

Olha este exemplo que exibe todos os formulários HTML de uma página:



		for (int x = 0; x < Request.Form.Count; x++)
		{
			Response.Write("<br />");
			Response.Write(Request.Form.GetKey(x) +
				"-" + Request.Form.Get(x));

		}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok agora eu consigo ver os campos que estou postando, só que os campos HTML não são passados, eu crio eles dinamicamente através de JavaScript, mas eles não são postados, vejam:

 

<input id='txtParNome1' class='formu' readonly="readOnly" />

e com o código acima aparecem todos, menos os HTML...

 

Agora começo a pensar que não é possível resgatar campos HTML em C#, será?

 

Se tiverem uma outra forma de criar campos dinamicos sem submeter(sem C#) a página também resolve...

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tiago,

 

 

Agora começo a pensar que não é possível resgatar campos HTML em C#, será?

 

Pode ficar tranquilo, é possível sim fazer o que você deseja, só falta descobrir o porque do problema.

 

Algumas dicas:

 

- Verifique se os inputs estão sendo 'atachados' no form principal da aplicação (lembre-se só deve existir um form em uma página asp.net)

- Verifique se os atributos name e id são os mesmo (isso pode gerar problemas no ie)

 

Criei este exemplo só para mostrar a você que é possível, então não desista!

 

<%@ Page Language="C#" trace="true"%>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
	protected void Page_Load(object sender, EventArgs e)
	{
		for(int x = 0; x < Request.Form.Count; x++)
		{
			if (Request.Form.GetKey(x).Contains("campotexto"))
			{
				Response.Write("<br />");
				Response.Write(Request.Form.GetKey(x) +
					"-" + Request.Form.Get(x));
			}
		}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
	<title>Untitled Page</title>
	<script type="text/javascript">
	var globalCount = 0;
		function insertInput()
		{
		   var form = document.getElementById('<%= form1.ClientID %>');
		   var input = document.createElement('input');
		   input.setAttribute('type', 'text');
		   input.setAttribute('value', 'Olá mundo');
		   input.setAttribute('readonly', 'readonly');
		   input.setAttribute('name', 'campotexto' + globalCount);
		   form.appendChild(input);
		   globalCount++;		   
		
		}
	
	</script>
</head>
<body>
	<form id="form1" runat="server">
	<div>
	<script type="text/C#" runat="server">

	
	</script>
	<asp:Button OnClientClick="insertInput(); return false;" Text="Incluir" ID="button1" 
			runat="server" UseSubmitBehavior="False" />
	<asp:Button Text="Enviar" ID="button2" 
			runat="server" UseSubmitBehavior="True"/>
	</div>
	</form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.