[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

Show/Hide error message label on masterpage

Posted on 2010-11-11
8
Medium Priority
?
1,269 Views
Last Modified: 2012-05-10
I have a masterpage that is used specifically for logged in users.  In one of my content pages I have many gridviews all within a single wizard control.  I am trying to build in some generic error handling for each of these grids.
I added a label to the master page and then in the rowupdated of the grid I forward to a generic procedure that gets the label and show the exception error.  I haven't tried it, but I assume it works.
Problem is, I want to clear the error from displaying once the user has started editing again.
What is the best way to track clearing the message?
Thanks
Protected Sub grdBrands_RowUpdated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs) Handles grdBrands.RowUpdated
        If Not e.Exception Is Nothing Then
            HandleUpdateErrorMessage(e)
        End If
    End Sub

    Public Sub HandleUpdateErrorMessage(ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs)
        Dim lbl As Label = Me.Master.FindControl("lblErrorMsg")
        If Not lbl Is Nothing Then
            If TypeOf (e.Exception) Is ArgumentException Then
                lbl.Text = CType(e.Exception, ArgumentException).Message
            Else
                lbl.Text = "An error occurred while trying to upgrade this record"
            End If

        End If
        e.ExceptionHandled = True
        e.KeepInEditMode = True

    End Sub
    Public Sub HideShowErrorMessage()
        Dim lbl As Label = Me.Master.FindControl("lblErrorMsg")
        If Not lbl Is Nothing Then
            If lbl.Visible Then
                lbl.Visible = False
            Else
                lbl.Visible = True
            End If
        End If

    End Sub

Open in new window

0
Comment
Question by:Sheritlw
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
  • 2
  • +2
8 Comments
 
LVL 3

Expert Comment

by:Epitel0920
ID: 34114139
Add an onclick event to make the Control hidden..
0
 
LVL 13

Expert Comment

by:AngryBinary
ID: 34114140
If you can wait until the page posts back to clear the message, you can just set the error message text to String.Empty in the Page_Load event. That's how I typically handle information text labels.
0
 
LVL 3

Expert Comment

by:mortimer452
ID: 34114154
My suggestion would be to set the lbl.Visible = True in the Page_Load event on every page load, that way the first thing that happens on every postback is to clear the previous error message.

If something later on in the page execution causes an error, set the label text and visible = true to display the message.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 13

Expert Comment

by:AngryBinary
ID: 34114259
If you want a dynamic solution, there are a lot of ways to skin the cat. One would be to write a javascript method that sets the 'onchange' event of all the input fields on the page to clear the text label:

Dim lbl As Label = Me.Master.FindControl("lblErrorMsg")
Dim script As String = "function clearErrors() {" _
& "   document.getElementById('" & lbl.ClientId & "').innerHTML = '';'" _
& "}" _
& "var inputs = document.getElementsByTagName('input');" _
& "for (var i = 0; i < inputs.length; i ++) {" _
& "    var element = inputs[i];" _
& "    var old = (element.onchange) ? element.onchange : function () {};" _
& "    element.onchange = function () {old(); clearErrors()};" _
& "}"
Page.RegisterStartupScript(Me.GetType(), "clearErrors", script)

You could attach a similar method to events specific to the control that caused the error if you were to capture that information when the error is reported.
0
 
LVL 10

Expert Comment

by:P1ST0LPETE
ID: 34114591
How about adding a method sub to handle the "OnRowEditing" event on each of your grid views.  Then inside the event clear out lbErrorMessage.  This would be exactly what you want.  As soon as the user clicks the edit button on one of the rows, the error is cleared.
0
 

Author Comment

by:Sheritlw
ID: 34114706
Hi P1ST0LPETE,

Could you give me an example of how I would handle that?

Thanks
0
 
LVL 10

Accepted Solution

by:
P1ST0LPETE earned 2000 total points
ID: 34114998
My solution is assuming that you are using the standard editing that is provided by the GridView control.  If you are then every time the user clicks the edit button on a row, then the RowEditing even is fired during the process.  You can tap into this by adding "OnRowEditing" as shown below:

        <asp:GridView ID="GridView1" runat="server" OnRowEditing="GridViewRowEdit">
            <Columns>
                <asp:CommandField ShowEditButton="true" EditText="EditRow" />
                <asp:BoundField Visible="false" DataField="ID" />
            </Columns>
        </asp:GridView>

Then on your code behind you would have a method to handle like this:

    Protected Sub GridViewRowEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs)
        Dim lbl As Label = Me.Master.FindControl("lblErrorMsg")
        lbl.Text = ""
    End Sub
0
 

Author Closing Comment

by:Sheritlw
ID: 34115018
Quick and simple.
Thank you very much
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
This course is ideal for IT System Administrators working with VMware vSphere and its associated products in their company infrastructure. This course teaches you how to install and maintain this virtualization technology to store data, prevent vuln…
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
Suggested Courses

656 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question