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 :

Auto Complete Extender


Sujet :

ASP.NET

  1. #1
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 2
    Par défaut Auto Complete Extender
    Bonjour je cherche a réaliser de l'auto complétion dans un textbox a l'aide du composant Ajax AutoCompleteExtender, mais je n'arrive pas à le faire fonctionner

    J'ai réaliser le web service me permettant de collecter le tableau de string afficher pour la complétion.

    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
     using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Data.SqlClient;
    using System.Configuration;
     
    namespace ecranspecif.Reclamations
    {
        /// <summary>
        /// Summary description for AutoComplete
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
        [System.Web.Script.Services.ScriptService]
        public class AutoComplete : System.Web.Services.WebService
        {
     
     
            string strConnection = ConfigurationManager.ConnectionStrings
    ["pradoConnectionString"].ConnectionString;
     
            // ***************************************************************************
            // Méthodes d'autocomplétion pour les entreprises
            // ***************************************************************************
     
     
            [WebMethod]
            public string[] GetSocByCompletion(string prefixtext, int count)
            {
     
     
                SqlConnection conn = new SqlConnection(strConnection);
                conn.Open();
                SqlCommand comm = new SqlCommand("SELECT TOP 10 SOC_RAISON FROM TD_SOCIETE WHERE SOC_RAISON LIKE @prefixText", conn);
                comm.Parameters.AddWithValue("@prefixText", prefixtext + "%");
                SqlDataReader dr = comm.ExecuteReader();
                List<string> l = new List<string>();
                while (dr.Read())
                {
                    l.Add(dr["SOC_RAISON"].ToString());
                }
                conn.Close();
                string[] t = l.ToArray();
                return t;
            }
        }
    }

    Et voici le code de ma page avec le composant qui qui utilise la méthode de mon 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
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ecranspecif.Reclamations.Default" %>
     
    <%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>
     
    <!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="ScriptManager3" runat="server" />
        <div>
         <asp:TextBox ID="TextBox2" runat="server" style="margin-left: 10px"></asp:TextBox>
        <cc1:AutoCompleteExtender ID="TextBox2_AutoCompleteExtender" runat="server" 
            CompletionSetCount="10" 
            DelimiterCharacters="" 
            Enabled="True" 
            MinimumPrefixLength="2" 
            ServiceMethod="GetSocByCompletion" 
            ServicePath="~AutoComplete.asmx" 
            TargetControlID="TextBox2">
        </cc1:AutoCompleteExtender>
        </div>
        </form>
    </body>
    </html>

    PS: J'ai d'autres composants Ajax sur ma page qui fonctionnent sans problème avec d'autres méthodes du web service tels que des cascadingdropdownlist.J'ai isolé ici dans une nouvelle page mon control pour gagner en clarté.


    Je n'ai pas d'erreur retournée mais rien ne se pense lorsque je renseigne le textbox.En mode debug ma methode "GetSocByCompletion" n'est jamais appelée.
    J'ai aussi testé cette méthode "GetSocByCompletion" seule elle fonctionne correctement.

    Y'a surement quelque chose qui m'échappe, j'ai parcouru les divers tutos sur se site mais je n'ai pas trouvé mon erreur.
    Si vous pouvez m'éclairer merci.

    Cordialement,
    Yann.

  2. #2
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 2
    Par défaut
    Mon problème semble venir du type de projet visual studio choisi.

    Si j'utilise ce code dans un site web il fonctionne parfaitement
    alors que le même code au sein d'un projet: "application web asp.net" il ne marche pas, il n' a pas d'erreur mais le lien entre le contrôle et la méthode du web service ne se fait pas.

    Le problème a déjà été constaté par d'autre
    http://forums.asp.net/p/1115576/1728093.aspx
    mais je n'ai pas commis l'erreur qui est mentionnée à savoir oublier de mettre [System.Web.Script.Services.ScriptService] dans le web service

    Pour contourner le problème il faut mettre la webmethod directement dans le code la page aspx en static comme suit et ne pas utiliser un web service standard:

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    using System.Web.Services;
    using System.Configuration;
     
    namespace WebApplication2
    {
        public partial class _Default : System.Web.UI.Page
        {
     
            static string strConnection = ConfigurationManager.ConnectionStrings
     ["pradoConnectionString"].ConnectionString;
     
            // ***************************************************************************
            // Méthodes d'autocomplétion pour les entreprises
            // ***************************************************************************
     
     
            [WebMethod]
            public static string[] GetProducts(string prefixText)
            {
     
                SqlConnection conn = new SqlConnection(strConnection);
                conn.Open();
                SqlCommand comm = new SqlCommand("SELECT TOP 10 SOC_RAISON FROM TD_SOCIETE WHERE SOC_RAISON LIKE @prefixText", conn);
                comm.Parameters.AddWithValue("@prefixText", prefixText + "%");
                SqlDataReader dr = comm.ExecuteReader();
                List<string> l = new List<string>();
                while (dr.Read())
                {
                    l.Add(dr["SOC_RAISON"].ToString());
                }
                conn.Close();
                string[] t = l.ToArray();
                return t;
            }
            protected void Page_Load(object sender, EventArgs e)
            {
     
            }
        }
    }
    Si quelqu'un à mieux ...

    cordialement,
    Yann.

Discussions similaires

  1. auto completion
    Par Blo0d4x3 dans le forum Composants
    Réponses: 14
    Dernier message: 03/06/2009, 17h08
  2. Auto-Completion dans Eclipse
    Par trino dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 22/01/2007, 13h00
  3. [VC++ 8] Coloration syntaxique et auto completion
    Par 5:35pm dans le forum VC++ .NET
    Réponses: 9
    Dernier message: 24/10/2006, 11h44
  4. Auto Completion avec un JComboBox
    Par jeffciara dans le forum AWT/Swing
    Réponses: 17
    Dernier message: 19/10/2006, 08h37
  5. auto completion sous crimson
    Par Australia dans le forum ASP
    Réponses: 4
    Dernier message: 13/07/2006, 12h50

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