• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1279
  • Last Modified:

Show/Hide error message label on masterpage

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
Sheritlw
Asked:
Sheritlw
  • 2
  • 2
  • 2
  • +2
1 Solution
 
Epitel0920Commented:
Add an onclick event to make the Control hidden..
0
 
AngryBinaryCommented:
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
 
mortimer452Commented:
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
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
AngryBinaryCommented:
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
 
P1ST0LPETECommented:
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
 
SheritlwAuthor Commented:
Hi P1ST0LPETE,

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

Thanks
0
 
P1ST0LPETECommented:
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
 
SheritlwAuthor Commented:
Quick and simple.
Thank you very much
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.

Join & Write a Comment

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
  • 2
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now