Bonjour à tous,

Je suis en train d'essayer de faire en sorte que l'événement onchange d'une textbox (coté client) fasse un appel coté serveur.

Pour éviter les problèmes de performances j'ai envisagé d’appeler le postback sur les événements onkeydown et onkeyup avec un système de timer.

Tout fonctionne à merveille mais le postback se fait en boucle ...

Un peu de code pour rendre mon problème plus compréhensif :

Mon javascrpt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    <script type="text/javascript">
        var to; // variable to which we assign setTimeout function
        var prm = Sys.WebForms.PageRequestManager.getInstance(); // Page Request Manager object
        function onRechercheKeyUp() {
            to = setTimeout('performSearch();', 1500);
        }
        function onRechercheKeyDown() {
            if (to) clearTimeout(to);
        }
        function performSearch() {
            if (prm.get_isInAsyncPostBack) {
                prm.abortPostBack();
            }
            __doPostBack("<%=butRechercher.UniqueID %>", "");
        }
    </script>
Ma textbox et son bouton caché :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
                        <asp:TextBox ID="txtRechercheSerie" runat="server" CssClass="span12" placeholder="Rechercher une série" onkeydown="onRechercheKeyDown();" onkeyup="onRechercheKeyUp();">
                        </asp:TextBox>
                         <asp:Button runat="server" ID="butRechercher" Style="display: none" OnClick="butRechercher_Click" />
Et enfin le code behind du bouton :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
        protected void butRechercher_Click(object sender, EventArgs e)
        {
            recherche = txtRechercheSerie.Text;
            ChargerDataGridSeries();
        }
Je suis presque à la fin de mon problème mais butRechercher_Click est appelé en boucle.

Est ce que vous avez des suggestions ?
Je compte vraiment sur vous.

Merci d'avance,

Vinceee38