Ir para conteúdo

POWERED BY:

Arquivado

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

Ciniro

Passando Sessions de JavaScript para C# em Ajax.NET

Recommended Posts

E ai galera...E o seguinte precisava de uma força porquê já perdi dois dias na implementação de um projeto e minha gerente vai me matar se eu naum conseguir achar solução para o seguinte problema.Bem, estou trabalhando com C# em VS2003 e estou implementando um sistema onde preciso usar filtros através de dropdows, para isso estou adaptando meu código para funcionar com o Ajax.NET (ajax.dll) afim de não precisar carregar a página toda hora que o usuário escolher alguma opção na dropdown(autopostback), o que ocorre é que uma dropdown filtra a outra(tipo estado, depois cidades correspondentes).Para isso defini tudo que tinha de ser definido para o funcionamento correto do ajax. O processo decorre assim:-O usuário seleciona um item da minha drop, no topo do meu Form onde se encontra está mesma drop eu inseri o seguinte código:Ajax.Utility.RegisterTypeForAjax(typeof(classeVNovo.construtores.modeloCTRL));Ajax.Utility.RegisterTypeForAjax(typeof(WebForm1));dpdComprarCategoria.Attributes.Add("onchange","java script:atualizamodelo();");dpdComprarMarca.Attributes.Add("onchange","java script:atualizamodelo();");dpdVenderCategoria.Attributes.Add("onchange","java script:atualizamodeloVender();");dpdVenderMarca.Attributes.Add("onchange","java script:atualizamodeloVender();");cmdComprarPesquisar.Attributes.Add("onclick","java script:guardasessao();");ou seja, quando o cara selecionar a dropdown dpdComprarCategoria o evento atualizamodelo escrito em JavaScript ocorre.-Dentro dele eu chamo minha classe em C# modeloCTRL(definindo antes no code-behind do form como mostrado acima), e executo o seu metodo( sim, eu coloquei antes da função [Ajax.AjaxMethod()]) que me retorna um dataset, este dataset é passado (dataset_CallBack) para a minha outra funcão JavaScript que roda as linhas do dataset e preenche o segundo dropdown.-Até aqui tudo ótimo, mas o o problema vem agora. Depois de fazer a segunda dropdown carregar eu vou selecionar algum dado nela. -Selecionado o dado eu clico em pesquisar(o botão que vai filtrar pelo dado escolhido na 1º e 2º dropdown)-Esse clique chama minha outra função Ajax:cmdComprarPesquisar.Attributes.Add("onclick","java script:guardasessao();");dentro desta eu precisava pegar os dados selecionados nas drops e joga-los em variaveis de sessão:para isso eu criei uma funçao em C# que era instanciada dentro do JavaScript(isto porque não estava conseguindo acessar os selectedItem.value e .text das dropdowns(sim eu as defini com runat="server"), elas simplesmente não guardavam o conteúdo quando eu usava o evento click convencional do C#)(há elas são controles c#-WebControls e não HTMLControls):>>No scriptfunction guardasessao(){WebForm1.guardasessao(Form1.dpdComprarTipo.value,Form1.dpdComprarCategoria.value,Form1.dpdComprarMarca.value,Form1.dpdComprarModelo.value,Form1.dpdComprarEstado.value)}>>No code-behind da página[Ajax.AjaxMethod()]public void guardasessao(string tipoCOD,string categoriaCOD,string marcaCOD,string modeloCOD,string estadoCOD){ Session["codTipo"]=tipoCOD; Session["codCategoria"]=categoriaCOD; Session["codMarca"]=marcaCOD; Session["codModelo"]=modeloCOD; Session["codEstado"]=estadoCOD; Response.Redirect("FormResultadoPesquisa.aspx");} o que o ocorre é que quando os valores(passados por parametro) chegam no C#(e estão chegando normalmente) eu não consigo guarda-los na sessão, simplesmente não aceita, não dá erro nem nada, ele para de carregar a página e sei lá dá um refresh na mesma. Não consigo também usar request, nem response.redirect. Se tentar guarda-los dentro de ViewState, a página recarrega e os mesmo ficam vazios. Preciso jogar esses dados em variáveis de sessão.Como Faço? Estou fazendo algo errado?Pensei em jogar os dados em sessões diretamente no javascript, só que depois preciso capturalos no code-behind C#(evento load_page) da página seguinte e provavelmente teria o mesmo problema.Sério mesmo, preciso de ajuda, ninguém matou essa aqui na empresa. Se puderem me ajudar ficarei muito grato. Sei que a dúvida é grande e dificil de entender, mas se o cara da programação existir ele deve aparecer neste tópico e matar minha dúvida cruel, valeu moçada, espero resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara entendi sua pergunta mas eu nao gostei muito desse ajax.net !!!

usa o magicAjax ele é bem mais facil de usar e é muito bom recomendo, e tem para o framework 1.x e 2.0, ou entao faz o seu proprio ajax hehehe da um trampo mas fica bom !!!

 

ai com o magicAjax faço assim:

 

no dropdown (combo1) coloco a chamada do  OnSelectedIndexChanged="carregaProjeto"ai no cs so :combo2.Items.Clear();combo2.DataBind();combo2.Items.Insert(0, new ListItem("....", ""));while (drDados.Read()){   combo2.Items.Add(new ListItem(drDados["Nome"].ToString(), drDados["Id"].ToString()));}

 

bem vale apena dar uma olhada la no magicAjax espero que te ajude !!!

 

www.magicajax.net/

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.