Ir para conteúdo

POWERED BY:

Arquivado

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

Lab Design

ASPX perde o vinculo com o JS

Recommended Posts

Eu to tentando desenvolver uma aplicação aspx C# onde eu preciso utilizar diversas vezes um formview dentro de uma página.

Tipo: Lançamento contábil num livro.

então eu fiz o seguinte:

Na masterpage eu coloquei a chamada do JS:

 

<head id="Head1" runat="server">

<title>Untitled Page</title>

<script language="javascript" type="text/javascript" src="../Functions/funcoes.js"></script>

</head>

Neste js tem diversas funções para formatação de campos.

 

Quando executo o form pela primeira vez, tudo funciona perfeito como mostrado abaixo, pois tenho campo tipo data e campo que so pode aceitar numeros.

<table id="tbForm" width="100%" border="0" cellpadding=0 cellspacing=2>

<tr>

<td class="label" nowrap>Nota Fiscal:</td>

<td bgcolor=#efefef>

<input name="ctl00$Navigate$frmAdd$notaFiscal" type="text" maxlength="6" id="ctl00_Navigate_frmAdd_notaFiscal" class="required" onkeypress="return formataNumero(event, 'ctl00_Navigate_frmAdd_notaFiscal');" style="width:75px;text-align:center" />

Digite só números

</td>

<tr>

<td class="label">Data Fatur.:</td>

<td bgcolor=#efefef><input name="ctl00$Navigate$frmAdd$dataFat" type="text" maxlength="10" id="ctl00_Navigate_frmAdd_dataFat" class="required" onkeypress="return formataData(event, 'ctl00_navigate_frmAdd_dataFat');" style="width:75px;text-align:center" />

Digite só números

</td>

Observe o evento onKeypress nos dois textbox

 

Após preencher o formview e gravar os dados, ele retorna para a mesma página, sendo que o formview está num webWindow portanto so é acionado pressionando o link Adicionar Lançamento.

 

Quando pressiono para novo lançamento, abre o formview novamente mas num tem mais os eventos onKeyPress!!!!!!!!!!!!!!! ai o campo passa a aceitar tudo e o campo data também.

 

<tr>

<td class="label" nowrap>Nota Fiscal:</td>

<td bgcolor=#efefef>

<input name="ctl00$Navigate$frmAdd$notaFiscal" type="text" maxlength="6" id="ctl00_Navigate_frmAdd_notaFiscal" class="required" style="width:75px;text-align:center" />

Digite só números

</td>

<tr>

<td class="label">Data Fatur.:</td>

<td bgcolor=#efefef><input name="ctl00$Navigate$frmAdd$dataFat" type="text" maxlength="10" id="ctl00_Navigate_frmAdd_dataFat" class="required" style="width:75px;text-align:center" />

Digite só números

</td>

O que está faltando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lab Design como esta dando problema no seu HTML tente colocar essa validação no seu código C# utilizando Attributes ficará assim:

 

TextBox1.Attributes.Add("onkeypress", "return formataData(event, this);");

A mesma idéia com os dois JavaScript's

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi amigo eu já fiz isto mas acho que em lugar errado sei la:

 

protected void Page_Load(object sender, EventArgs e)

{

Distrib.Text = "DISTRIBUIDOR TAL E QUAL";

 

TextBox notaFiscal = (TextBox)frmAdd.FindControl("notaFiscal");

notaFiscal.Attributes.Add("onkeypress", "return formataNumero(event, 'ctl00_Navigate_frmAdd_notaFiscal');");

 

TextBox dataFat = (TextBox)frmAdd.FindControl("dataFat");

dataFat.Attributes.Add("onkeypress", "return formataData(event, 'ctl00_navigate_frmAdd_dataFat');");

 

TextBox quant = (TextBox)frmAdd.FindControl("quant");

dataFat.Attributes.Add("onkeypress", "return formataData(event, 'ctl00_navigate_frmAdd_dataFat');");

 

 

Button toSend = (Button)frmAdd.FindControl("btn_Add");

toSend.Attributes.Add("onClick", "return checkForm('aspnetForm');");

 

//cmpValidaData.ValueToCompare = DateTime.Now.ToString("d");

}

O que acontece é que esta página é utilizada inúmeras vezes então, após o usuario fazer o primeiro registro, ela clica em inserir registro novamente, ai a tela vem sem os eventos.

Vou tentar colocar os eventos diretamente no textbox pra ver se da certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lab Design estranho pois quando ocorre qualquer tipo de postback no formulário ele entra novamente no Page_Load, teria que percorrer novamente seu Page_Load e adicionar novamente o atributo aos TextBox's.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tambem não entendi porque isso ta ocorrendo mas está me brecando no projeto porque se eu num tratar isso, vai dar pau na gravação, já que os campos notafiscal, quantidade são inteiros e o campo data datetime. Eu já fui passo a passo e realmente apos a gravação ele entra no pageload novamente mas não sei porque não coloca os eventos.

 

Tenho que arrumar uma solução rápido pois estou atrasado com o projeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

quintelab

 

Eu consegui resolver da maneira mais tosca que possa imaginar....

 

 

protected void srcVendas_Inserted(object sender, ObjectDataSourceStatusEventArgs e)

{

grdVendas.DataBind();

Response.Redirect("Vendas.aspx?id=14");

}

 

forçando um reload na pagina.

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.