lost event c# asp.net vb.net

c# - event - ¿Método Lost Focus para asp.net textbox?



lost focus javascript (4)

Cómo escribir el método de enfoque perdido para el método de texto asp.net? Por favor, ¿alguien tiene alguna idea de escribir esto, compartir conmigo?


¿Por qué no usas eso? Lostfocus funciona igual con:

OnTextChanged="TextBox_TextChanged"


Así que sé que todos han mostrado el enfoque básico del lado del cliente, y eso está bien, pero al menos quería mostrar una solución para manejar un evento específico del lado del cliente en el servidor.

Echemos un vistazo al código y lo revisemos pieza por pieza.

Como ASP.Net TextBox no expone un evento del lado del servidor para OnBlur, tendrá que hacerlo manualmente. Afortunadamente, esto es bastante fácil de lograr. Supongamos que tiene este pequeño fragmento de código en su página .aspx. Desea actualizar un servidor de control de etiquetas cuando el cuadro de texto pierda el foco.

<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 tiene una función incorporada en el lado del cliente que se llama para activar devoluciones que toma dos parámetros:

  1. Objetivo (la identificación del control que causa el evento)
  2. Argumento (información opcional que le gustaría pasar al servidor)

Puede simplemente conectar el evento en marcado agregando el siguiente atributo y valor a su TextBox:

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

Sin embargo, el marco tiene una manera fácil de generar este script para su servidor. En su método Page_Init, simplemente agregue una llamada a GetPostBackEventReference y asígnela al atributo "onblur" para que pueda controlarlo de la siguiente manera:

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

Con los eventos de control del servidor estándar, el cableado e invocación del evento se maneja de forma IPostBackEventHandler implementando IPostBackEventHandler . Eso es mucho trabajo para una solución única, así que permite manejarla manualmente inspeccionando los parámetros de solicitud.

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; } }

Al final no es terriblemente difícil simular los eventos secundarios del servidor si no te importa investigar un poco sobre el marco.

¡Espero que esto ayude!

Aclamaciones,
Josh


Si desea que el servidor haga algo después de que el cuadro de texto pierda el foco, puede agregar AutoPostback = "True" y, si no desea que la devolución de datos vuelva a cargar toda la página, use un UpdatePanel:

<asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" /> </ContentTemplate> </asp:UpdatePanel>

La función TextBox1_TextChanged puede hacer algo con el texto (en el lado del servidor).


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