Ir para conteúdo

POWERED BY:

Arquivado

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

paulojr

WebControl Dinamico e PostBack, nao funciona no primeiro click

Recommended Posts

Salve Galera, to precisando da ajuda de voces.

 

bom é o seguinte, eu tenho alguns webcontrols que são puxados para a pagina da seguinte maneira:

 

pagina.aspx.cs

 

 

protected void Page_Load(object sender, EventArgs e)
	{
		if (Session["WUC"] != null)
		{
			Control control = LoadControl(GetWUC("WUC"));
			Panel1.Controls.Add(control);
			
		}
	}

	private String GetWUC(String key)
	{
		return Session[key].ToString();
	}

	private void SetWUC(String str_control)
	{
		if (Session["WUC"].ToString() != str_control)
			Session["WUC"] = str_control;
	}


	protected void Button1_Click(object sender, EventArgs e)
	{
		try
		{
			if (GetWUC("WUC") != "~/WUCalendar.ascx")
			{
				Panel1.Controls.Clear();
				SetWUC("~/WUCalendar.ascx");
				Control control = LoadControl(GetWUC("WUC"));
				Panel1.Controls.Add(control);
			}
		}
		catch (Exception ex)
		{
			throw new Exception(ex.ToString());
		}
	}

	protected void Button2_Click(object sender, EventArgs e)
	{
		try
		{
			if (GetWUC("WUC") != "~/WWUCqualquer.ascx")
			{
				Panel1.Controls.Clear();
				SetWUC("~/WUCqualquer.ascx");
				Control control = LoadControl(GetWUC("WUC"));
				Panel1.Controls.Add(control);
			}
		}
		catch (Exception ex)
		{
			throw new Exception(ex.ToString());
		}
	}

	protected void Button3_Click(object sender, EventArgs e)
	{
		try
		{
			if (GetWUC("WUC") != "~/ws2.ascx")
			{
				Panel1.Controls.Clear();
				SetWUC("~/ws2.ascx");
				Control control = LoadControl(GetWUC("WUC"));
				Panel1.Controls.Add(control);
			}
		}
		catch (Exception ex)
		{
			throw new Exception(ex.ToString());
		}
	}

 

 

e no Global.asax tenho o seguinte tambem.

 

 

 

void Session_Start(object sender, EventArgs e)
	{
		Session["WUC"] = "WUCalendar.ascx";
		Session.Timeout = 50;
	}

 

mas quando carregado o controle calendario por exemplo, e o usuario tenta mudar de mes ele só efetua a mudança apos o segundo clique.

 

podem dar uma olhada no experimento que fiz no link: http://teste.blancalion.com.br/

 

Galera valeu de novo a ajuda ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala quintelab beleza ?

 

cara o controle do calendario esta padrão, nao adicionei nenhum evento, mas na parte do dos radiobuttonlist coloquei um evento simples ao selecionar o Radio, ele só tranfere o valor do Radio para a Label.

 

o que nao to entendendo é porque no primeiro click ou seleção ele nao funciona e nas demais sim.

 

o codigo com calendar.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WUCalendar.ascx.cs" Inherits="WUCalendar" %>
<asp:Calendar ID="Calendar1" runat="server" BackColor="White" BorderColor="Black"
	DayNameFormat="Shortest" Font-Names="Times New Roman" Font-Size="10pt" ForeColor="Black"
	Height="127px" NextPrevFormat="FullMonth" TitleFormat="Month" Width="215px" EnableTheming="True"
	OnSelectionChanged="Calendar1_SelectionChanged" OnDataBinding="Calendar1_SelectionChanged">
	<SelectedDayStyle BackColor="#CC3333" ForeColor="White" />
	<TodayDayStyle BackColor="#CCCC99" />
	<SelectorStyle BackColor="#CCCCCC" Font-Bold="True" Font-Names="Verdana" Font-Size="8pt"
		ForeColor="#333333" Width="1%" />
	<DayStyle Width="14%" />
	<OtherMonthDayStyle ForeColor="#999999" />
	<NextPrevStyle Font-Size="8pt" ForeColor="White" />
	<DayHeaderStyle BackColor="#CCCCCC" Font-Bold="True" Font-Size="7pt" ForeColor="#333333"
		Height="10pt" />
	<TitleStyle BackColor="Black" Font-Bold="True" Font-Size="13pt" ForeColor="White"
		Height="14pt" />
</asp:Calendar>

calendar.ascx.cs

using System;
using System.Web.UI;

public partial class WUCalendar : UserControl
{
	protected void Page_Load(object sender, EventArgs e)
	{
		
	}

	protected void Calendar1_SelectionChanged(object sender, EventArgs e)
	{
	}
}

e do form.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ws2.ascx.cs" Inherits="ws2" %>
<asp:RadioButtonList ID="RadioButtonList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged">
	<asp:ListItem>Ivan</asp:ListItem>
	<asp:ListItem>Paulo</asp:ListItem>
	<asp:ListItem>Claudio</asp:ListItem>
</asp:RadioButtonList>

<br />
<br />
<br />
<asp:Label ID="Label1" runat="server"></asp:Label>

form.ascx.cs

using System;
using System.Web.UI;

public partial class ws2 : UserControl
{
	protected void Page_Load(object sender, EventArgs e)
	{
	}

	protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
	{
		try
		{
			for (int i = 0; i < RadioButtonList1.Items.Count; i++)
			{
				if (RadioButtonList1.Items[i].Selected)
				{
					Label1.Text = RadioButtonList1.Items[i].Text;
				}
			}
		}
		catch (Exception ex)
		{
			ex.ToString()
		}
	}
}

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

paulojr fiz o teste com o calendário e aqui ele mudou no primeiro clique, o código do controle WUCalendar.ascx é o mesmo.

A forma com que eu utilizo ele é diferente, vou tentar explicar.

No web.config do meu projeto eu adiciono uma linha dentro da tag controls:

<controls>
<add src="~/Controls/WUCalendar.ascx" tagName="Calendario" tagPrefix="BrCtl"/>
</controls>

Nos meus formulários eu coloco a seguinte linha no código html:

<BrCtl:Calendario ID="Calenadrio" runat="server" />

E pelo menos dessa forma ele mudou de mês no primeiro cliquei, e o código do calendário eu peguei o seu para testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala quintelab,

 

me fala uma coisa, o teste que voce fez o controle foi carregado dinamicamente ?

 

outra coisa , pelo que pude perceber é o seguinte:

 

o Calendar por exemplo ele funciona de primeira desde que ele tenha sido carregado com a pagina. caso descarregue ele e carregue outro controle ele na proxima vez que carregar passa a agir assim tambem.

 

eu coloquei o projeto de teste pra download caso queira olhar o que to tentanto fazer.

 

se alguem mais tiver uma ideia pra fazer esse esquema eu agradeço.

 

BAIXAR OS ARQUIVOS

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.