Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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á...
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);
}Obrigado
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...
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));
}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
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:
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">](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>Muito obrigado, agora sim, funcionou direitinho
Abraço
Você pode pegar a propriedade texto de todos os seus TextBox através de um For Each, percorrendo todo seu formulário.
Abraços...