| |||
MsgBox Otro problemilla que tengo es que he cogido y he implementado el MsgBox que microsoft tiene en su msdn, la cosa es que lo adjunto a mi proyecto y me encuentro con el siguiente problema. Si el proyecto es de VB.net funciona perfectamente pero si es de C# me da un error de compilación...me dice ¿falta una referencia de ensamblado?...a ver si alguien se ha encontrado con algun problema parecido, o sabe de algun control MsgBox que me permita utilizarlo bajo C#...un saludo. |
| |||
el messagebox no funciona en web, yo implemente una clase sencilla que utiliza la funcion alert de javascript. la primera vez que se invoca el metodo show en una pagina, se crea una cola en la que se guardan los mensajes de una misma pagina, dicha cola es almacenada en una hashtable. Los mensajes son desplegados despues que finaliza el render de la pagina. El metodo show es estatico, por esta razon se utiliza una hashtable para almacenar las colas de mensajes, porque varias paginas pueden estar utilizando el mismo metodo. Te paso el codigo de la clase... public class MessageBox { private static Hashtable m_PaginasenEjecucion = new Hashtable(); private MessageBox() { } public static void Show(string sMensaje) { // Si es la primera vez que la pagina ejecuta este metodo if (!m_PaginasenEjecucion.Contains(HttpContext.Curren t.Handler)) { // Intenta castear HttpHandlet como una pagina Page PaginaActual = HttpContext.Current.Handler as Page; if (PaginaActual != null) { // Crea una cola para almacenar los mensajes Queue ColaMensajes = new Queue(); // Agrega el mensaje a la cola ColaMensajes.Enqueue(sMensaje); // Agrega la cola de mensaje al hash table. La referencia a la pagina // (IHttpHandler) como clave m_PaginasenEjecucion.Add(HttpContext.Current.Handl er, ColaMensajes); // Esto se hace para agregar JavaScript para los alerts PaginaActual.Unload += new EventHandler(ExecutingPage_Unload); } } else { // Si el metodo ya fue ejecutado por la pagina en ejecucion // la cola de mensajes ya fue creada y ya se agrego una referencia al hashtable Queue cola = (Queue)m_PaginasenEjecucion[HttpContext.Current.Handler]; // Agrega el nuevo mensaje a la cola cola.Enqueue(sMensaje); } } // Termino de mostrarse la pagina, se ejecuta el JavaScript para producir el alert private static void ExecutingPage_Unload(object sender, EventArgs e) { // Obtener la cola de mensaje del hashtable Queue cola = (Queue)m_PaginasenEjecucion[HttpContext.Current.Handler]; if (cola != null) { StringBuilder sb = new StringBuilder(); // Cantidad de mensajes registrados int iCantMensajes = cola.Count; // Se utiliza el StringBuilder para construir el JavaScript del cliente sb.Append("<script language='javascript'>"); // Recorre los mensajes registrados string sMsg; while (iCantMensajes-- > 0) { sMsg = (string)cola.Dequeue(); sMsg = sMsg.Replace("\n", "\\n"); sMsg = sMsg.Replace("\"", "'"); sb.Append(@"alert( """ + sMsg + @""" );"); } // Cierra el JavaScript sb.Append(@"</script>"); // Elimina la referencia de la hashtable m_PaginasenEjecucion.Remove(HttpContext.Current.Ha ndler); // Escribe el JavaScript al final del stream respuesta HttpContext.Current.Response.Write(sb.ToString()); } } } Espero que te sea util Saludos Natalia |
| ||||
Yo encontre esta informacion de microsoft, esta muy buena, un poco compleja de entender pero funciona excelente, bueno eso digo yo que no se casi nada de asp http://www.microsoft.com/spanish/msd...ces/art120.asp |