Ir ao conteúdo
  • Cadastre-se

Alterações JQuery (DatePicker) somem após Postback do UpdatePanel (.NET)


HiperTecnologia

Posts recomendados

E aí galera, beleza??

É o seguinte, estou programando em VB.NET (mas compreendo C#).

Coloquei a função DatePicker do JQuery na página e está funcionando beleza, eu clico no campo, aparece o calendário, eu clico na data e a data que cliquei aparece no campo. Até aí beleza.

Mas ao executar qualquer postback, a data que eu tinha clicado não fixa no campo, volta o valor que estava antes, como seu eu nunca tivesse clicado no campo.

Como eu resolvo esse problema? :cry:

Preciso de uma resposta urgente. :(

Att,

Rafael

Link para o comentário
Compartilhar em outros sites

De tanto pensar descobri por mim mesmo a solução e resolvi compartilhar.

Para resolver o problema, usei os recursos chamados:

1. WebMethod (<System.Web.Services.WebMethod()> _)

2. JQuery

3. Session

Vamos ao trabalho.

Primeiro, no arquivo js onde está meu código javascript e Jquery, criei o evento Change (no caso dos datepickers) e evento KeyUp (no caso de outras textbox que não estavam fixando os valores), veja o exemplo dos 2 abaixo:


$("#txtPedCadDataEntregaItem").change("input",function(){
PageMethods.GravarValor("txtPedCadDataEntregaItem",$("#txtPedCadDataEntregaItem").val());
});
$("#txtPedCadQtdeItem").bind("keyup",function(){
PageMethods.GravarValor("txtPedCadQtdeItem",$("#txtPedCadQtdeItem").val());
});

Repare que estou chamando um WebMethod nomeado "GravarValor" que é uma procedure genérica que atribui valor para qualquer textbox, através de seu nome(ID) e o valor que ela deve receber, que ficou assim:


<System.Web.Services.WebMethod()> _
Public Shared Sub GravarValor(ByVal Campo As String, ByVal Valor As String)
Dim PageShared As New Page
PageShared = PageShared.Session("PageShared")
Dim CampoTXT = CType(PageShared.FindControl(Campo), TextBox)
CampoTXT.Text = Valor
End Sub

Você deve ter reparado no termo Session("PageShared") nessa procedure acima, na sessão eu gravei uma "cópia" da pagina atual (Page), essa cópia é feita no evento Me.Init, fica assim o código do evento:


Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If Not Page.IsPostBack Then
Session("PageShared") = Page
End If
End Sub

Até aí a atribuição nos devidos campos foram realizados, agora falta devolver estas atribuições para a pagina real em que estão os verdadeiros textbox, para isso coloquei eles no PageLoad, dessa forma:


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim PageShared As New Page
PageShared = CType(Session("PageShared"), Page)

For index As Integer = 0 To CamposTXT.Length - 1
Dim txt01 = CType(Page.FindControl(CamposTXT(index)), TextBox)
Dim txt02 = CType(PageShared.FindControl(CamposTXT(index)), TextBox)
txt01.Text = txt02.Text
Next
End Sub

Pronto, agora todos os valores que eu coloquei que não fixavam, agora aparecem normalmente.

IMPORTANTE, ao limpar um campo que você está sendo usado no preenchimento no WebMethod devem ser limpados tanto no Page como no Session("PageShared"), beleza???

Att,

Rafael

PS.: Acredito que o tópico pode ser fechado pela moderação.

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...