The best way to show messages to user

Hi!

In my website I'm using a Panel with a Label inside to show confirmation messages to user.
For e.g.
When the user fails the login, I set
Panel.visible = true;
Label.Text = "Login Failed";

Sometimes gets hard to handle the panel to visible/invisible.

It does works but I think that is not the better (or prettier) way to do that.

Any suggestions? Maybe some Ajax/JQuery showing the message just for a few seconds...

Thanks in advance!
calypsoworldAsked:
Who is Participating?
 
robastaCommented:
also, consider using the ajaxcontroltoolkit modalpopup - here is an example for a gridview (the site has many useful examples for the control) http://mattberseth.com/blog/2007/07/confirm_gridview_deletes_with.html
0
 
Gary DavisDir Internet SvcsCommented:
Just set Label.Text to your error or empty if no error. Then you don't need a panel and don't need to set any visible property.
Gary
0
 
GewgalaCommented:
You could try something like this in the attached code snippet.

From C# codebehind for example, you would call it by:

string messageText = "Hello there!";

StringBuilder sb = new StringBuilder()
sb.AppendLine("<script type=\"text/javascript\">");
sb.AppendLine("showMessage(\"" + messageText + "\"");");
sb.AppendLine("</script>");

Page.ClientScript.RegisterStartupScript(Page.GetType(), "key", sb.ToString());
function showMessage(text)
{
    var msgBox = document.getElementById("divMessage");
    if (msgBox)
    {
        msgBox.innerHTML = text;
        msgBox.style.display = "";
        setTimeout("hideMessage()", 5000);
    }
}
function hideMessage()
{
   var msgBox = document.getElementById("divMessage");
   msgBox.style.display = "none";
}

Open in new window

0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
GewgalaCommented:
Forgot to clarify, in the above, the code snippet is Javascript, and it will display your div box for 5 seconds (5000 milliseconds) and then it will hide it automatically afterward.  The top code example above the snippet is how you would execute the javascript using C#.
0
 
Adam MenkesC# ASP.NET DeveloperCommented:
0
 
calypsoworldAuthor Commented:
Thank you for reply.

I need a Panel to make the message more attractive. If it's just a label appears, maybe user can't see it.

In a GridView, click on a button that returns me a message, this message appears. Ok.
But if I still using the GridView, this message keeps visible, so I put this code on page load method.

(isPostBack) Label.Text = ""

Ok, it works. But there is nothing easier or ''prettier'' ?


Thank you!
0
 
Adam MenkesC# ASP.NET DeveloperCommented:
0
 
GewgalaCommented:
My way could be used to make it pretty, you just have to style your div properly.  The div will appear and then disappear after 5 seconds like you were saying.
0
 
calypsoworldAuthor Commented:
> Gewgala

The C# code that you posted, must be placed on page load method?

How should I call the JavaScript method showMessage(text) from C#?

Thank you!
0
 
GewgalaCommented:
You can put it in a method, such as the attached snippet.  Then just call it whenever you want to display the message.  Anywhere in your code, if you have the below snippet in your codebehind file:

// some code...

ShowMessage("Your information was saved successfully!");

// some more code...



protected void ShowMessage(string message)
{
     string messageText = "Hello there!";

     StringBuilder sb = new StringBuilder()
     sb.AppendLine("<script type=\"text/javascript\">");
     sb.AppendLine("showMessage(\"" + message + "\"");");
     sb.AppendLine("</script>");

     Page.ClientScript.RegisterStartupScript(Page.GetType(), "key", sb.ToString());
}

Open in new window

0
 
GewgalaCommented:
Forgot to erase this line:

string messageText = "Hello there!";

from my previous post in the attached snippet.  I copied and pasted the example from before into the method body.  The messageText variable is no longer necessary since the message being passed in is a parameter, and you're just plugging in the parameter to the javascript function call.
0
 
calypsoworldAuthor Commented:
Thank you for replies!

I have not tested all the solutions yet.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.