c# - Lost Focus-Methode für asp.net Textfeld?




vb.net (3)

Ich weiß also, dass jeder den grundlegenden clientseitigen Ansatz gezeigt hat, und das ist in Ordnung, aber ich wollte zumindest eine Lösung für die Behandlung eines bestimmten clientseitigen Ereignisses auf dem Server zeigen.

Werfen wir einen Blick auf den Code und gehen Sie Stück für Stück darüber.

Da ASP.Net TextBox kein serverseitiges Ereignis für OnBlur verfügbar macht, müssen Sie es manuell tun. Glücklicherweise ist das ziemlich einfach zu erreichen. Angenommen, Sie haben diesen kleinen Code in Ihrer ASPX-Seite. Sie möchten die Seite eines Label-Steuerungsservers aktualisieren, wenn die TextBox den Fokus verliert.

<asp:Label ID="lblOnBlur" runat="server">On Blur Example</asp:Label><br />
<asp:TextBox ID="tbOnBlur" runat="server" ClientIDMode="Static" /><br />
<asp:Label ID="lblOutput" runat="server" />

ASP.Net hat eine eingebaute clientseitige Funktion , die aufgerufen wird, um Postbacks auszulösen, die zwei Parameter benötigen:

  1. Ziel (die ID des Steuerelements, das das Ereignis verursacht)
  2. Argument (optionale Informationen, die Sie an den Server weitergeben möchten)

Sie können das Ereignis nur in Markup verkabeln, indem Sie das folgende Attribut und den folgenden Wert zu Ihrer TextBox hinzufügen:

onblur="__doPostBack('tbOnBlur','OnBlur');"

Das Framework bietet jedoch eine einfache Möglichkeit, dieses Skript für Ihre Serverseite zu generieren. Fügen Sie in Ihrer Page_Init-Methode einfach einen Aufruf von GetPostBackEventReference und weisen Sie ihn wie folgt dem Attribut "onblur" für Ihr Steuerelement zu:

protected void Page_Init(object sender, EventArgs e)
{
    var onBlurScript = Page.ClientScript.GetPostBackEventReference(tbOnBlur, "OnBlur");
    tbOnBlur.Attributes.Add("onblur", onBlurScript);
}

Mit standardmäßigen Serversteuerungs-Ereignissen wird die Ereignisverbindung und der Aufruf automatisch durch die Implementierung von IPostBackEventHandler für Sie IPostBackEventHandler . Das ist eine Menge Arbeit für eine einmalige Lösung, also lassen Sie uns das einfach manuell erledigen, indem Sie die Request-Parameter überprüfen.

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        var ctrlName = Request.Params[Page.postEventSourceID];
        var args = Request.Params[Page.postEventArgumentID];

        HandleCustomPostbackEvent(ctrlName, args);
    }
}

private void HandleCustomPostbackEvent(string ctrlName, string args)
{
    //Since this will get called for every postback, we only
    // want to handle a specific combination of control
    // and argument.
    if (ctrlName == tbOnBlur.UniqueID && args == "OnBlur")
    {
        lblOutput.Text = "On Blur Event Handled Server Side!" + DateTime.Now;
    }
}

Am Ende ist es nicht besonders schwierig, serverseitige Ereignisse zu simulieren, wenn es Ihnen nichts ausmacht, sich ein wenig in das Framework zu vertiefen.

Hoffe das hilft!

Prost,
Josh

Wie man verlorene Fokusmethode für asp.net Textmethode schreibt? Bitte jemand hat eine Idee, dies zu schreiben, mit mir teilen?


Warum benutzt du das nicht? Lostfocus funktioniert gleich mit:

OnTextChanged="TextBox_TextChanged"

if (!Page.IsPostBack)
    {
        txtName.Attributes.Add("onblur","alert('Hello world')");
    }






vb.net