N??o sei se o t??tulo ficou claro com o que eu queria dizer, mas vejamos a seguinte situa????o:
“Quero colocar uma mensagem de confirma????o via code-behind onde ir?? ser emitida para o usu??rio e a depender do que ele escolher ir?? ser processado um certo trecho de c??digo ou outro. Tipo o confirm do JavaScript, s?? que ?? executado pelo ASP.NET.”
No Code Project tem v??rias formas de implementa????o e umas delas me chamou a aten????o: o de Yavuz Kucukpetek. Usando AJAX ?? poss??vel transformar um Panel nessa janela flutuante usando o ModalPopupExtender. Dei uma simplificada no c??digo dele (j?? informei que n??o fiz, apenas ajustei) e voc?? podem baixar o controle modificado aqui.
Depois que baixarem o controle, adicione no seu projeto. Vamos l??! Na p??gina que deseja utilizar o controle, registre-o e coloque-o da seguinte forma:
<%@ Register Src=”~/inc_ConfirmMessage.ascx” TagName=”ConfirmacaoBox” TagPrefix=”Thiago” %>
<Thiago:ConfirmacaoBox ID=”ConfirmacaoBox” runat=”server”></Thiago:ConfirmacaoBox>
No code-behind dever?? ficar o seguinte:
protected void Page_Load(object sender, EventArgs e)
{
ConfirmacaoBox.MsgBoxAnswered += Mensagem_Resposta;
}
public void Mensagem_Resposta(object sender, inc_ConfirmMessage.MsgBoxEventArgs e)
{
if (e.Answer == inc_ConfirmMessage.enmAnswer.OK)
{
// Se clicou em OK processa o que deseja
}
else
{
// Sen??o processa outra coisa
}
}
protected void ExecutaProcesso_Click(object sender, EventArgs e)
{
ConfirmacaoBox.AddMessage(“Deseja continuar o c??lculo do processo na mesma p??gina?”, inc_ConfirmMessage.enmMessageType.Attention, true, true, “”);
}
Pronto! Apenas isso… Vamos ??s explica????es. No Page_Load precisamos informar o m??todo que ir?? gerenciar as decis??es do usu??rio, por isso informamos o Mensagem_Resposta. Dentro dele ir?? conter os processos que ir??o ser executados a depender da escolha. O ExecutaProcesso_Click ?? o m??todo executado quando clicamos no bot??o que ir?? disparar a pergunta.
“Ah Thiago, mas a?? ?? s?? apenas uma confirma????o. E se eu quiser v??rias intera????es?”
Simples, basta adicionar outra Caixa de Confirma????o para a segunda etapa de decis??es chamando-a dentro do processo de decis??o da primeira e assim por diante.