Ir para conteúdo

Arquivado

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

RafaXimenes

Javascript para EVITAR PostBack

Recommended Posts

Bom dia, pessoal!

 

Seguinte..

Estou mexendo com Asp.Net há um mês.

 

Estou ficando indignado pois tenho a seguinte situação:

 

Tenho um Dual Combo que é montado via componente ASP ListBox.

 

No primeiro, os dados chegarão através de uma TreeView. No segundo, será adicionado através do DualCombo.

Tenho uma função JavaScript para fazer isso (colocar a opção escolhida no segundo List).

 

 

Só uso um asp:button para dar o postback na página inteira e processar os dados, só que a aplicação não "enxerga" os itens criados via JavaScript.

 

Alguma sugestão de como usar JavaScript ou tenho que desistir mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa ASP.NET.. tô passando....

 

Movido de ASP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ListBox renderiza um Select do HTML... cada Item do ListBox é renderizado como um <option> do HTML.

 

Crio options para preencher o Segundo Select.

 

Esses novos options não são lidos.

 

Ficou mais claro?

Quer dar uma lida no código JavaScript?

 

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estava dando uma olhada na página que postou e no seu javaScript, mas como você utiliza um ListBox, no botão ele deveria percorrer e verificar todos os itens que estão cadastrados. Poste seu código HTML e do seu botão para poder testar, pois no botão ele deveria conseguir pegar os dados.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, Falha minha..

aquele exemplo não é o que estou trabalhando...

aquele é só um modelo para caso não fosse conhecido o termo Dual Combo.

 

de qqr maneira, aqui vai o asp e o javascript

 

Aspx:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
			<ContentTemplate>
				<asp:ListBox ID="lbxComponentesTodos" runat="server" Width="200px" Rows="7" SelectionMode="Multiple" />
			</ContentTemplate>
			<Triggers>
				<asp:AsyncPostBackTrigger ControlID="trvEstrutura" />
			</Triggers>
		</asp:UpdatePanel>
		<input type="button" id="btnAdComponente" value=">>" onclick="SelectEstruturaIndicador(0)" />
		<input type="button" id="btnExComponente" value="X" />
		<asp:ListBox ID="lbxComponentes" runat="server" Width="200px" Rows="7" SelectionMode="Multiple" />

java script:

function SelectEstruturaIndicador(flag)
{
if (flag == 0){
	var CmpEstr = document.getElementById("<%= lbxComponentesTodos.ClientID %>")
	var CmpResult = document.getElementById("<%= lbxComponentes.ClientID %>")
	} else 
	   if (flag == 1){
	   var CmpEstr = document.getElementById("<%= lbxIndicadoresTodos.ClientID %>")
		var CmpResult = document.getElementById("<%= lbxIndicadores.ClientID %>")
	   }
	
	var NwOpt
	var flag_break = true
	
	for (i=0;i<CmpEstr.length;i++)
	{
	  if (CmpEstr.options[i].selected)
	  {  
		for (w=0;w<CmpResult.length;w++)
		{
		  if (CmpResult.options[w].value == CmpEstr.options[i].value) 
		  {
			flag_break = false
			alert("Componente já selecionado")
			break
		  }
		}
		if (flag_break)  
		{
		   NwOpt=document.createElement('option')
		   NwOpt.text = CmpEstr.options[i].text
		   NwOpt.value = CmpEstr.options[i].value
		   try{
			 CmpResult.add(NwOpt,null)
		   }catch(ex){
			 CmpResult.add(NwOpt)
			 CmpResult2.add(NwOpt)
		   }
		}
	  }

	}	 
}

 

no aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio não ter sido muito claro...

 

O Javascript que passei ali em cima, faz isso.

 

Vamos lá passo a passo:

 

 

Tenho os dois box:

Imagem Postada

 

Sleciono a "Opção 1" e clico no Botão ">>"

 

O botão ">>" CHAMA O JAVASCRIPT que instancia um novo <option> para o list de baixo, como mostra a figura:

 

Imagem Postada

 

Quando eu Clico no "Button" ( que É UM COMPONENTE ASP) Acontece um postback pois é a função padrão do componente. Quando acontece o Postback, a aplicação não percebe os <option> criados no List de baixo!

 

Imagem Postada

 

Espero ter ficado mais claro...

 

Sobre sua pergunta..

É que estou indignado que uma linguagem como Asp.Net não consiga fazer isso, principalmente pq com o monte de postback necessário para se preencher esses lisbox, por exemplo, você gasta servidor a toa. Entendeu? :)

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos tentando. http://forum.imasters.com.br/public/style_emoticons/default/coolio.gif

Ele vai perder os valores caso você construa seu ListBox no Page_Load e não utilize a condição If not Ispostback caso contrário acredito que mesmo com o PostBack ele não irá perder os dados como no exemplo que você mostrou.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

É.... talvez tenha entendido um pouco..

 

O primeiro (o de cima) ListBox é preenchido em ServerSide. Nele eu não perco os itens num postback.

 

O Segundo (o de baixo) é preenchido via Javascript em ClientSide. Nesse eu perco os itens quando dou o postback.

 

Tem alguma maneira de não perder os dados? Pois quando vou enviar as informações pelo "button" há um postback na página e os dados chegam Null, mesmo tendo sido preenchidos em ClientSide.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É brother volto no que disse no post 10, desta forma acredito que você não poderá utilizar um botão com PostBack, o seu botão também terá que ClientSide. A não ser que consiga de alguma forma armazenar os valores do segundo ListBox em alguma variável ou sessão, desta forma depois do Postback bastava ler esta variável, mas terá que ser tudo JavaScript. Acho que vou ficar devendo essa... <_<

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah... Beleza, quintelab..

 

mas com uma variável ou sessão eu consigo jogar pro ServerSide depois? o0

Preciso gravar as informações no banco...... é possível? o0

 

 

Então, quem não entendeu a história no post 10 fui eu! rsrs :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tambem to no mesmo barco, alguem ai conseguiu resolver esse problema de quando apertar no botao o asp.NET consiga recuperar as informações do listBox alterado em ClientSide...

No asp antigo recuperavamos as informações atraves do request.form. Alguem sabe se tem alguma forma parecida com essa no c#

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.