IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[ASP/C#] Toolkit AutoCompleteExtender


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur en alternance
    Inscrit en
    Février 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 107
    Par défaut [ASP/C#] Toolkit AutoCompleteExtender
    Bonjour,

    J'ai suivi un petit tutoriel http://www.davidhayden.com/blog/dave...erControl.aspx pour utiliser AutoCompleteExtender. Je fais tout comme il est dit mais ça ne marche pas.

    Voici ma page aspx :

    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
    17
    18
    19
    20
    21
    22
    23
    24
     
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestAjax.WebForm1" %>
     
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
     
     
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"/>
     
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
     <asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" ServicePath ="MonWebService.asmx"  ServiceMethod="GetSuggestions" TargetControlID="TextBox1" MinimumPrefixLength="1" CompletionSetCount="12"/>
           <asp:SqlDataSource ID="SqlDataSource1" runat="server"></asp:SqlDataSource>
        </form>
     
    </body>
    </html>
    et ma page web service :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <%@ WebService Language="C#" CodeBehind="MonWebService.asmx.cs" Class="TestAjax.MonWebService" %>
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
     
    namespace TestAjax
    {
        /// <summary>
        /// Description résumée de MonWebService
        /// </summary>
        /// 
     
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // Pour autoriser l'appel de ce service Web depuis un script à l'aide d'ASP.NET AJAX, supprimez les marques de commentaire de la ligne suivante. 
        [System.Web.Script.Services.ScriptService]
     
        public class MonWebService : System.Web.Services.WebService
        {
     
            //[WebMethod]
            //public string HelloWorld()
            //{
            //    return "Hello World";
            //}
     
        [WebMethod]
     
        public string[] GetSuggestions(string prefixText, int count)
     
        {
     
            List<string> responses = new List<string>();
     
            for (int i = 0; i < count; i++ )
     
                responses.Add(prefixText + (char)(i + 65));
     
     
     
            return responses.ToArray();
     
        }
     
    }
    }
    Je travaille sur un projet application web et non un site web. Est ce que le problème viendrait de là? Je part vraiment de zero avec l'ajax dans de l'asp si vous pouvez m'aider un peu ça serait sympa.
    Merci à vous.

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Citation Envoyé par V_inSe Voir le message
    Je fais tout comme il est dit mais ça ne marche pas.
    Donne nous des précisions, qu'est ce qui ne marche pas ?
    Es-tu sûr du chemin vers ton asmx ?
    Est-ce que tu rentres dans ta webmethod ?
    As-tu une exception quelque part ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    Oui, un peu plus d'explication serait bien.
    Sinon quelques pistes: Il y a plusieurs toolkits qui dépendent du Framework (3.5 ou 4 je crois) selon le Framework qui tu utilises, il faut choisir le bon ScriptMananger, avec Framework 4, le ScriptManager de AJAX passe, avec 3.5 il faut utiliser le ScriptManager du toolkit.

    Lien trouvé par Zoofy sur lequel il s'est appuyé pour son AutoComplete:
    http://www.asp.net/ajax/ajaxcontrolt...ocomplete.aspx

  4. #4
    Membre confirmé
    Profil pro
    Développeur en alternance
    Inscrit en
    Février 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 107
    Par défaut
    Non aucune erreur ne s'affiche et pas d'exception. Je fais appel à mon web service dans la page aspx comme ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" ServicePath ="MonWebService.asmx"  ServiceMethod="GetSuggestions" TargetControlID="TextBox1" MinimumPrefixLength="1" CompletionSetCount="12"/>

    Mais j'ai pas l'inpression de rentrer dedans. Faut-il que je fasse appel à ma webmethod dans le code behind? Je n'ai pas de problème avec le chemin de mon asmx, je crois que ça vient d'un problème d'appel!

    Pour réponde à ta question papouuu j'utilise bien le framwork 4 et son ScriptManager.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    Je n'utilise pas de .asmx quand j'utilise un AutoCompleteExtender, je mets ma ServiceMethod directement en code behind et voici exemple de comment je fais:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    [System.Web.Script.Services.ScriptMethod()]
            [System.Web.Services.WebMethod]
            public static List<string> SearchCustomers(string prefixText, int count)
            {
                using (SqlConnection conn = new SqlConnection())
                {
                    conn.ConnectionString = ConfigurationManager
                            .ConnectionStrings["prodchimiquesConnectionString"].ConnectionString;
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        cmd.CommandText = "select ID_Article from Article where " +
                        "ID_Article like @SearchText + '%'";
                        cmd.Parameters.AddWithValue("@SearchText", prefixText);
                        cmd.Connection = conn;
                        conn.Open();
                        List<string> articles = new List<string>();
                        using (SqlDataReader sdr = cmd.ExecuteReader())
                        {
                            while (sdr.Read())
                            {
                                articles.Add(sdr["ID_Article"].ToString());
                            }
                        }
                        conn.Close();
                        return articles;
                    }
                }
            }

  6. #6
    Membre confirmé
    Profil pro
    Développeur en alternance
    Inscrit en
    Février 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 107
    Par défaut
    Bon j'ai supprimé mon fichier serviceweb et j'ai mis ma webmethod dans mon code behind comme tu me l'as dis :


    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
    17
    18
    19
     public partial class WebForm1 : System.Web.UI.Page
        {
               [WebMethod]
                public static string[] GetSuggestions(string prefixText, int count)
                {
                    List<string> responses = new List<string>();
                    for (int i = 0; i < count; i++)
                        responses.Add(prefixText + (char)(i + 65));
     
                    return responses.ToArray();
                }
                protected void Page_Load(object sender, EventArgs e)
                {
                }
     
                protected void TextBox1_TextChanged(object sender, EventArgs e)
                {
                } 
        }
    Ensuite je fais appel à ma webmethod dans la page aspx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" ServiceMethod="GetSuggestions" TargetControlID="TextBox1" MinimumPrefixLength="1" CompletionSetCount="12"/>
    Mais le resultat reste le même. Faut'il que je place la method à un endroit précis?

    MERCI

  7. #7
    Membre confirmé
    Profil pro
    Développeur en alternance
    Inscrit en
    Février 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 107
    Par défaut
    Bonjour,
    J'ai repris depuis le début par rapport à mon cas. Je répète, le but ici et de proposé une liste de nom en fonction de la lettre que tape l'utilisateur dans le textebox. Mes nom sont bien enregistrés dans une base de données

    Mon code devient donc :

    ASPX :

    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
     
     
    <asp:ScriptManager ID="ScriptManager1" runat="server"/>
     
            <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" ServiceMethod="GetProducts" MinimumPrefixLength="1"
        CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" 
     TargetControlID="txtBoxNom" runat="server">
            </ajaxToolkit:AutoCompleteExtender>
            <br />
            <asp:Label ID="lblRechNom"   runat="server" Text="Recherche : " 
                Font-Names="Arial Black" Font-Size="Large" ForeColor="#4ECAF3"></asp:Label>
     
            <br />
            <asp:TextBox ID="txtBoxNom" Text="nom médecin" runat="server" Height="30px" 
                style="margin-left: 0px; margin-bottom: 0px;" Width="200px" Font-Names="Arial Black" 
                Font-Size="X-Large"></asp:TextBox>
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     public partial class index : System.Web.UI.Page
        {
     
            static String connString = @"Data Source=B0168;Initial Catalog=annuaire;Integrated Security=True";
     
            [System.Web.Script.Services.ScriptMethod()]
            [System.Web.Services.WebMethod]
     
            public static string[] GetProducts(string prefixText)
            {
     
                SqlConnection conn = new SqlConnection(connString);
                conn.Open();
                SqlCommand comm = new SqlCommand("SELECT NOM FROM PERS WHERE NOM LIKE %" + @prefixText, conn);
                comm.Parameters.AddWithValue("@prefixText", prefixText + "%");
                SqlDataReader dr = comm.ExecuteReader();
                List<string> l = new List<string>();
                while (dr.Read())
                {
                    l.Add(dr["NOM"].ToString());
                }
                conn.Close();
                string[] t = l.ToArray();
                return t;
            }
    Je me demande si ça ne vient pas du paramètre que j'envois. Pourtant je n'ai aucune erreur retourné.
    Vraiment merci de m'aider.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    Je pense que c'est le type que tu renvoie.
    Essaye ça:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    static String connString = @"Data Source=B0168;Initial Catalog=annuaire;Integrated Security=True";
     
            [System.Web.Script.Services.ScriptMethod()]
            [System.Web.Services.WebMethod]
     
            public static List<string> GetProducts(string prefixText, int count)
            {
                using (SqlConnection conn = new SqlConnection())
                {
                    conn.ConnectionString = connString;
     
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        cmd.CommandText = "SELECT NOM FROM PERS WHERE NOM LIKE @prefixText + '%'";
                        cmd.Parameters.AddWithValue("@prefixText", prefixText);
                        cmd.Connection = conn;
                        conn.Open();
                        List<string> l = new List<string>();
                        using (SqlDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                l.Add(dr["NOM"].ToString());
                            }
                        }
                        conn.Close();
                        return l;
                    }                
                }
            }

    (Voici un lien qui m'avait bien aidé si ca ne marche toujours pas:
    http://www.aspsnippets.com/Articles/...-Services.aspx )

  9. #9
    Membre confirmé
    Profil pro
    Développeur en alternance
    Inscrit en
    Février 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 107
    Par défaut
    Il ne se passe toujorus rien ! Je met un point d'arrêt sur ma webmethod pour voir se qui peut bien se passé et je remarque que quand je tape une lettre dans le textBox je ne rentre pas dans ma webmethod. Pourtant je renseigne bien le service dans l'autocomplete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" ServiceMethod="GetProducts"

  10. #10
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    Tu as copié collé le code?

    La je capte pas... chez moi ca passe très bien.. je suis sur framework 3.5, ca joue peut-être mais je pense pas

  11. #11
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Tu as testé la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NOM FROM PERS WHERE NOM LIKE %" + @prefixText
    a la mano ?

  12. #12
    Membre confirmé
    Profil pro
    Développeur en alternance
    Inscrit en
    Février 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 107
    Par défaut
    Tu as copié collé le code?
    Bien sûr que oui. J'ai repris exactement le code que tu m'as gentiment donné.

    Pour répondre à ta question calagan99 non je n'ai pas testé la requête avant vu que ça ne me générai aucune erreur. Ca viendrait de ma requête tu penses?
    C'est la première fois que j'utilise des paramètres dans une requête. Je vais tester la requête à voir se que ça donne.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JQuery ou asp.net ajax toolkit
    Par chris81 dans le forum Développement Web avec .NET
    Réponses: 9
    Dernier message: 20/11/2010, 13h15
  2. Réponses: 2
    Dernier message: 02/09/2008, 13h27
  3. Probleme avec Ajax Toolkit AutoCompleteExtender
    Par Promesses dans le forum ASP.NET
    Réponses: 17
    Dernier message: 18/02/2008, 17h19
  4. [AJAX] [Ajax Control Toolkit] ModalPopup + GridView(asp.net)
    Par nkonito dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/01/2008, 21h28
  5. [asp.NET 2.0][AJAX Control Toolkit] Deploiement
    Par patricklinden dans le forum ASP.NET
    Réponses: 1
    Dernier message: 05/12/2007, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo