I am maintaining an ASP.NET site, and I was attempting to get the dialogs looking better using jQuery. The web application has a C# class called MessageBox which allows messages to be shown to the client from the server side.... essentially in the C# on an aspx codebehind if some logic 'does not compute', you can just MessageBox.Show('your error message');
Since the MessageBox class appeared to just 'inject' javascript...the "alert(your message)" I tried changing the javascript to a jquery dialog call:
html: the standard jQuery example dialog... (cut off the tags on purpose...just to get the code example to show up... there is probably a real way to do this on here... but this is my first post...)
div id="dialog" title="Example dialog"> p>Some text that you want to display to the user./p> /div>
jQuery: I commented out the Alert, and substituted: sb.Append("$('dialog').dialog('open');");
while( iMsgCount-- > 0 )
{
sMsg = (string) queue.Dequeue();
sMsg = sMsg.Replace( "\n", "\\n" );
sMsg = sMsg.Replace( "\"", "'" );
//sb.Append( @"alert( """ + sMsg + @""" );" );
**** sb.Append("$('dialog').dialog('open');"); ****
}
I was expecting this to open the dialog set up in html, however nothing shows. I figured javascript is javascript... and that executing instead a jQuery call versus manual Alert wouldn't matter... however clearly there is a disconnect.
Any thoughts on how to solve this problem? Or any better implementations out there I am not aware of?
Thanks, for any and all help... I've include the full MessageBox class below.
Curt.
public class MessageBox
{
private static Hashtable m_executingPages = new Hashtable();
private MessageBox(){}
public static void Show( string sMessage )
{
if( !m_executingPages.Contains( HttpContext.Current.Handler ) )
{
Page executingPage = HttpContext.Current.Handler as Page;
if( executingPage != null )
{
Queue messageQueue = new Queue();
messageQueue.Enqueue( sMessage );
m_executingPages.Add( HttpContext.Current.Handler, messageQueue );
executingPage.Unload += new EventHandler( ExecutingPage_Unload );
}
}
else
{
Queue queue = (Queue) m_executingPages[ HttpContext.Current.Handler ];
queue.Enqueue( sMessage );
}
}
private static void ExecutingPage_Unload(object sender, EventArgs e)
{
Queue queue = (Queue) m_executingPages[ HttpContext.Current.Handler ];
if( queue != null )
{
StringBuilder sb = new StringBuilder();
int iMsgCount = queue.Count;
sb.Append( "" );
string sMsg;
while( iMsgCount-- > 0 )
{
sMsg = (string) queue.Dequeue();
sMsg = sMsg.Replace( "\n", "\\n" );
sMsg = sMsg.Replace( "\"", "'" );
sb.Append( @"alert( """ + sMsg + @""" );" );
}
sb.Append( @"" );
m_executingPages.Remove( HttpContext.Current.Handler );
HttpContext.Current.Response.Write( sb.ToString() );
}
}
}