ASP.NET TextBox événement LostFocus

J'ai besoin de déclencher le code sur le serveur, afin d'être appelé lorsqu'une zone de texte perd le focus.

Je sais qu'il y a onblur côté client de l'événement, et qu'il n'existe pas d'événement LostFocus, alors comment puis-je causer une publication à se produire lors de ma zone de texte perd le focus?

mise à Jour:

J'ai trouvé un blog qui semble donner pas mal de solution à cette question. Elle implique l'ajout d'un événement personnalisé à une zone de texte sous-classe, et l'enregistrement d'un script client qui appelle le serveur-côté de l'événement dans le onblur JavaScript client événement.

Ce qui suit est mon application en VB:

Public Class MyTextBox
    Inherits TextBox
    Implements IPostBackEventHandler

    Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
        MyBase.OnInit(e)
        If Not Page.ClientScript.IsClientScriptBlockRegistered("OnBlurTextBoxEvent") Then
            Page.ClientScript.RegisterStartupScript(MyBase.GetType, "OnBlurTextBoxEvent", GetScript, True)
            Attributes.Add("onblur", "OnBlurred('" & UniqueID & "','')")
        End If
    End Sub

    Public Delegate Sub OnBlurDelegate(ByVal sender As Object, ByVal e As EventArgs)

    Public Event Blur As OnBlurDelegate

    Protected Sub OnBlur()
        RaiseEvent Blur(Me, EventArgs.Empty)
    End Sub

    Private Function GetScript() As String
        Return "function OnBlurred(control, arg)" & vbCrLf & _
                "{" & vbCrLf & _
                "    __doPostBack(control, arg);" & vbCrLf & _
                "}"
    End Function

    Public Sub RaisePostBackEvent(ByVal eventArgument As String) Implements System.Web.UI.IPostBackEventHandler.RaisePostBackEvent
        OnBlur()
    End Sub
End Class

OriginalL'auteur Patrick McDonald | 2009-08-21