begin process at 2008 05 17 21:55:57
1 174 353 membres
460 nouveaux aujourd'hui
13 975 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : ajax+basede bonnée+autocomplétion [ Web 2.0 / Ajax ] (Shany)

ajax+basede bonnée+autocomplétion le 13/05/2007 05:35:48

Shany
Bonsoir,
Dans le cadre d'une application, je souhaiterais réaliser une autocomplétion.
J'utilise VS2005, je code en asp.net C# avec ajax en plus.
J'ai vu dans ma boite à outils ajax toolkit le control AutoCompleteExtender, c'est celui que je souhaite utiliser avec un web service.
Mon problème se trouve au niveau du webservice, je ne sais pas comment l'utiliser pour pouvoir réaliser mon autocomplétion.
Cette autocomplétion est relié à un texbox. (j'ai dejà paramétré le control AutoCompleteExtender pour qu'il puise utilisé le webservice)
Quand l'utisateur, entre la première lettre d'un mot par exemple, une liste de choix doit s'afficher (comme pour le google suggest).
La liste de choix se trouve dans une base de données type access 2003.
Si quelqu'un pouvait m'aider en m'expliquant quoi faire au niveau du webservice ce serait très aimable de sa part.
Merci.

Re : ajax+basede bonnée+autocomplétion le 14/05/2007 12:17:20

yanis7518

Salut shani

voila la structure que tu dois utiliser pour utiliser ton webservice avec le composant autocomplete


using System;
using System.Collections.Generic;
using System.Web.Services;
using System.Data.SqlClient;
[WebService(Namespace = " [ Lien ]")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class AutoComplete : WebService
{
    public AutoComplete()
    {
    }
    [WebMethod]
    [System.Web.Script.Services.ScriptMethod]
    public string[] GetCompletionList(string prefixText, int count)
    {
            //ton traitement ici
     }
}



ensuite tu n'as plus qu'a paramétrer ton controle de cette manière



            <ajaxToolkit:AutoCompleteExtender
                runat="server"
                ID="autoComplete1"
                TargetControlID="TON TEXTBOX"
                ServicePath="~/AutoComplete.asmx"
                ServiceMethod="GetCompletionList"
                MinimumPrefixLength="3"
                CompletionInterval="1000"
                EnableCaching="true"
                CompletionSetCount="12" />


si les résultats de ta requete son important je te conseille de laisser le "MinimumPrefixLength" à 3 sinon met le à 1.

Voila bonne journée


Re : ajax+basede bonnée+autocomplétion le 14/05/2007 16:27:04

Shany

Salut Yanis7518,

Je te remercie pour ta réponse mais ce n'est pas du tout ce que je recherche.

Je connais la structure du web service là où je bloque c'est au niveau de mon traitement : je dois me connecter à ma base de données Access 2003 pour récupérer le champ qui m'intéresse.

J'ai cru comprendre au détour de mes recherches que si j'utilise une base de données Access je dois utilisé non pas System.Data.SqlClient (qui est utilisé pour les base de données sql server) mais plutot System.Data.OleDb (ado.net).

On m'avait aussi dit d'utiliser des datareader, des dataset et des sqlcommand. Après quelques recherches j'ai fini par m'embrouillé.

Ce que j'aimerais, c'est une aide au niveau de mon traitement :

- comment se connecter à ma base Access ?
- comment récuper mon champs pour ensuite faire mon autocomplétion ?

Voilà ce que je recherche.

Au niveau du paramétrage de mon controle AutoCompleteExtender, c'est déjà fait il est déjà paramétré avec tous les renseignements nécessaires.

Merci encore, mais celà ne correspond pas à ce que je recherche.


Re : ajax+basede bonnée+autocomplétion le 14/05/2007 17:00:48

yanis7518
désolé j'avais mal compris

donc pour te connecter a ta base Access via OLE voila le code


OleDbConnection connec = new OleDbConnection;

connec.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;UserID=Admin;DataSource=C:\\MaBase.mdb;"; 
connec.Open();



ensuite tu as juste à executer ta requete


string requete = "SELECT tavalue FROM ...";
OleDbCommand tmpcmd = new OleDbCommand(requette, connect);
OleDbDataReader tmpreader = tmpcmd.ExecuteReader();
while(tmpreader.Read())
{
   console.Writeline(tmpreader.getstring(0));
}
tmpreader.close();
connec.close();



voila je pense que la j'ai repondu a ta question (enfin j'espere )


Re : ajax+basede bonnée+autocomplétion le 14/05/2007 17:25:22

yanis7518
a la place du console.writeline  tu stock tes valeurs dans un tableaux de string

Re : ajax+basede bonnée+autocomplétion le 14/05/2007 20:03:50

Shany

Re Yanis,
j'ai testé ton code mais ca ne fonctionne pas. Quand tu me dis de stock mes valeurs dans un tableau de string, c'est-à-dire !?

voici le code que j'ai tapé. J'avais tester avec le console.writeLine mais ca ne donnait rien.

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data.OleDb;


/// <summary>
/// Description résumée de autocomprs
/// </summary>
[WebService(Namespace = " [ Lien ]")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class autocomprs : System.Web.Services.WebService {

    public autocomprs () {

        //Supprimez les marques de commentaire dans la ligne suivante si vous utilisez des composants conçus
        //InitializeComponent();
    }

    [WebMethod]
    public string[] AutoSuggest(string prefixText, int count) {

        OleDbConnection connec = new OleDbConnection();

        connec.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;DataSource=base.mdb;";

        connec.Open();

        string requete = "SELECT Nom FROM base where Nom LIKE 'prefixText' ORDER BY Nom";

        OleDbCommand tmpcmd = new OleDbCommand(requete, connec);

        OleDbDataReader adaption = tmpcmd.ExecuteReader();     

        while(adaption.Read())
        {

            Console.WriteLine(adaption.GetString(0));

        }

        adaption.Close();
        connec.Close();

    }

}

Si tu pouvais m'expliquer plus en détail l'utilisation du tableau de string ce serait très sympa. Merci.


Re : ajax+basede bonnée+autocomplétion le 15/05/2007 09:34:57

yanis7518
tu as une erreur au niveau de cette ligne

string requete = "SELECT Nom FROM base where Nom LIKE 'prefixText' ORDER BY Nom";

tu dois rajouter le % pour lui indiquer qu'il doit te retourner tous les mots commençant par ton préfixe et tu obtiens :

string requete = "SELECT Nom FROM base where Nom LIKE 'prefixText%' ORDER BY Nom";

Re : ajax+basede bonnée+autocomplétion le 15/05/2007 19:39:16

Shany

Re salut Yanis,
J'ai corrigé l'erreur que j'avais néanmoins lorsque je lance l'application une erreur m'est retournée :

Erreur 1 'autocomprs.AutoSuggest(string, int)' : tous les chemins de code ne retournent pas nécessairement une valeur.

voici le code corriger, si tu arrive à trouver où se trouve l'erreur ... moi je pense que c'est au niveau des arguments déclarer dans la méthode utilisée !? :

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data.OleDb;


/// <summary>
/// Description résumée de autocomprs
/// </summary>
[WebService(Namespace = " [ Lien ]")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class autocomprs : System.Web.Services.WebService {

    public autocomprs () {

        //Supprimez les marques de commentaire dans la ligne suivante si vous utilisez des composants conçus
        //InitializeComponent();
    }

    [WebMethod]
    public string[] AutoSuggest(string prefixText, int count) {

        OleDbConnection connec = new OleDbConnection();

        connec.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;DataSource=base.mdb;";

        connec.Open();

        string requete = "SELECT Nom FROM base where Nom LIKE 'prefixText%' ORDER BY Nom";

        OleDbCommand tmpcmd = new OleDbCommand(requete, connec);

        OleDbDataReader adaption = tmpcmd.ExecuteReader();     

        while(adaption.Read())
        {

            Console.WriteLine(adaption.GetString(0));

        }

        adaption.Close();
        connec.Close();

    }

}

Merci encore pour l'aide que tu m'apporte.


Re : ajax+basede bonnée+autocomplétion le 15/05/2007 19:39:28

Shany

Re salut Yanis,
J'ai corrigé l'erreur que j'avais néanmoins lorsque je lance l'application une erreur m'est retournée :

Erreur 1 'autocomprs.AutoSuggest(string, int)' : tous les chemins de code ne retournent pas nécessairement une valeur.

voici le code corriger, si tu arrive à trouver où se trouve l'erreur ... moi je pense que c'est au niveau des arguments déclarer dans la méthode utilisée !? :

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data.OleDb;


/// <summary>
/// Description résumée de autocomprs
/// </summary>
[WebService(Namespace = " [ Lien ]")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class autocomprs : System.Web.Services.WebService {

    public autocomprs () {

        //Supprimez les marques de commentaire dans la ligne suivante si vous utilisez des composants conçus
        //InitializeComponent();
    }

    [WebMethod]
    public string[] AutoSuggest(string prefixText, int count) {

        OleDbConnection connec = new OleDbConnection();

        connec.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;DataSource=base.mdb;";

        connec.Open();

        string requete = "SELECT Nom FROM base where Nom LIKE 'prefixText%' ORDER BY Nom";

        OleDbCommand tmpcmd = new OleDbCommand(requete, connec);

        OleDbDataReader adaption = tmpcmd.ExecuteReader();     

        while(adaption.Read())
        {

            Console.WriteLine(adaption.GetString(0));

        }

        adaption.Close();
        connec.Close();

    }

}

Merci encore pour l'aide que tu m'apporte.


Re : ajax+basede bonnée+autocomplétion le 15/05/2007 19:39:31

Shany

Re salut Yanis,
J'ai corrigé l'erreur que j'avais néanmoins lorsque je lance l'application une erreur m'est retournée :

Erreur 1 'autocomprs.AutoSuggest(string, int)' : tous les chemins de code ne retournent pas nécessairement une valeur.

voici le code corriger, si tu arrive à trouver où se trouve l'erreur ... moi je pense que c'est au niveau des arguments déclarer dans la méthode utilisée !? :

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data.OleDb;


/// <summary>
/// Description résumée de autocomprs
/// </summary>
[WebService(Namespace = " [ Lien ]")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class autocomprs : System.Web.Services.WebService {

    public autocomprs () {

        //Supprimez les marques de commentaire dans la ligne suivante si vous utilisez des composants conçus
        //InitializeComponent();
    }

    [WebMethod]
    public string[] AutoSuggest(string prefixText, int count) {

        OleDbConnection connec = new OleDbConnection();

        connec.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;DataSource=base.mdb;";

        connec.Open();

        string requete = "SELECT Nom FROM base where Nom LIKE 'prefixText%' ORDER BY Nom";

        OleDbCommand tmpcmd = new OleDbCommand(requete, connec);

        OleDbDataReader adaption = tmpcmd.ExecuteReader();     

        while(adaption.Read())
        {

            Console.WriteLine(adaption.GetString(0));

        }

        adaption.Close();
        connec.Close();

    }

}

Merci encore pour l'aide que tu m'apporte.



[Page 1 Page 2]
Classé sous : ajax, webservice, autocomplétion, basede, bonnée

Participer à cet échange

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS