6
votes

Faites une requête de base de données sur l'événement de Textbox Onblur

J'utilise ASP.NET 3.5 avec C #. Je dois faire une recherche de base de données lorsqu'un utilisateur entre dans le producteur dans TXTPRODUCTID. Je suppose que faire JavaScript est hors de question puisque cela devra être un appel latéral du serveur. J'ai écrit ce code dans l'événement Page_Load de la page Web:

        protected void Page_Load(object sender, EventArgs e)
    {
        txtProductID.Attributes.Add("onblur", "LookupProduct()");
    }

        protected void LookupProduct()
    {
        //Lookup Product information on onBlur event;
    }


0 commentaires

3 Réponses :


1
votes

Cela devrait faire l'affaire, comme référence ici: http://www.codedigest.com/cODEDIGEST/80-CALLING-A-SERVERSIDE-METHOD-FROM-JAVAScript-NAP-NET-AJAX-- -PageMethods.aspx

Ce sont les commandes p> xxx pré>

ceci est le javascript p> xxx pré>

ceci est le serveur SidewebMethod P>

[WebMethod]
public static bool LookupProduct()
{
    return true;
}


2 commentaires

^^ Tout en utilisant déjà un Panneau Update, ce qui est un meilleur moyen d'atteindre ce comportement, le gestionnaire d'événements ONTExtChanged ou votre page de pageMethods suggérées?


Ça dépend. Voulez-vous un post-plan? Si oui, alors le OntextChanged est probablement la voie à suivre. J'ai écrit ma réponse autour de son balisage, tandis que la réponse de @ jrummel a moins de code.



3
votes

Utilisez le TEXTBOX.TEXTCHANGED événement.

ASPX MARKUP: P>

protected void txtProductID_TextChanged(object sender, EventArgs e)
{
   // do your database query here
}


1 commentaires

Notez que cette réponse provoquera le post-plancher pendant que @ Durilai ne le sera pas.



5
votes

Onblur est un événement côté client. lookupproduct est une méthode côté serveur. Vous ne pouvez pas en faire référence à un de l'autre - il n'y a tout simplement pas d'association que ce soit entre les deux.

Il n'y a pas de solution rapide pour cela - vous devez soit déclencher un message post-pack sur l'événement client (à l'aide de clientscriptManager.getpostbackeventreferferferference ASP.NET AJAX .

Alternativement, si vous n'avez pas vraiment besoin de déclencher cet événement sur chaque flou, et que lorsque le texte a modifié , vous pouvez simplement utiliser le côté serveur textbox.onchangned Evénement et définissez la propriété autopostback de la zone Textbox sur true . Assurez-vous de vous rappeler de définir autopostback , sinon cela ne vous mènera nulle part.


3 commentaires

L'événement doit être tiré sur LostFocus / Onblur de la zone de texte


@ user279521: Il n'y a pas d'événement LOSTFOCUS LOSTFOCUS, Donc, si vous devez le signaler à l'événement Onblur , vous devez construire le post-plan / rappel comme indiqué dans le deuxième paragraphe.


@ user279521. Regardez ma réponse ci-dessous qui vous permettra d'appeler une méthode côté serveur à partir de n'importe quel type d'événement JavaScript.