Service Web Annuaire

Signaler
Messages postés
77
Date d'inscription
mardi 17 novembre 2009
Statut
Membre
Dernière intervention
18 août 2015
-
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
-
Bonsoir tout le monde,

je suis bloqué sur une syntaxe de code toute bête à vrai dire, j'ai réalisé un web service en c# qui fonctionne comme un annuaire et qui prend en compte comme base de donnée un fichier XML (WCF en gros).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void linq_personne_Selecting_Selecting(object sender, LinqDataSourceSelectEventArgs e)
    {
        int idPersonne = 0;
        try
        {
            idPersonne = int.Parse(txt_id.Text);
        }
        catch { }

        // consulter le service d'annuaire
        wsAnnuaire.AnnuaireClient proxy = new wsAnnuaire.AnnuaireClient();
        wsAnnuaire.Personne p = proxy.GetPersonneByID(idPersonne);

        // formater le résultat pour LinqDataSource
        List<wsAnnuaire.Personne> sel = new List<wsAnnuaire.Personne>();
        sel.Add(p);
        e.Result = sel;

    }
    protected void cmd_find_Click_Click(object sender, EventArgs e)
    {
        dt_personne.DataBind();
    }
}


Donc là en tapant l'id de la personne je retrouve dans ma DetailsView son nom, prenom et sa promo.
Je cherche le moyen de taper le nom et le prenom de la personne au lieu de son id pour retrouver sa promo en fait. Sauf que je ne sais comment modifier mon code.

Déjà j'ai modifié idPersonne = int.Parse(txt_id.Text);
j'ai mis à la place string nom = string. (txt_id.Text); // que mettre entre string. et (txt_id.Text) déjà ??
et ensuite
wsAnnuaire.Personne p = proxy.GetPersonneByID(idPersonne); que mettre à la place de GetPersonneByID(idPersonne) ??

Voilà j'espère que j'ai été assez clair ^^ je compte sur vous merci !

5 réponses

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

pour ta première interrogation tu n'as pas besoin de parser txt_id.Text, car il s'agit déjà d'un string.

Pour la deuxième question, il faut simplement que ta classe AnnuaireClient contienne un fonction du type :
	public Personne GetPersonneByName(string name);

Si elle n'existe pas il faudra te la palucher.

Enfin, faire une recherche uniquement sur le nom risque de te renvoyer plusieurs enregistrement, à voir comment tu veux gérer ça.

bon dev
Messages postés
77
Date d'inscription
mardi 17 novembre 2009
Statut
Membre
Dernière intervention
18 août 2015

Ok, je vais essayer ça de suite merci !
Messages postés
77
Date d'inscription
mardi 17 novembre 2009
Statut
Membre
Dernière intervention
18 août 2015

Donc si j'ai bien compris j'ai remplacer idPersonne = int.Parse(txt_id.Text); par
nom = txt_id.Text; c'est bien ça ?
Messages postés
77
Date d'inscription
mardi 17 novembre 2009
Statut
Membre
Dernière intervention
18 août 2015

Ok ça marche merci jopop ;).
Par contre j'ai redémarrez mon visual studio le lendemain et là il me met une erreure lors du débogage à cette ligne :

 wsAnnuaire.Personne p = proxy.GetPersonneByName(nomprenom);


l'erreure : l'exception CommunicationException n'a pas été gérée par le code utilisateur.
Pourquoi un jour ça fonctionne et un autre pas ?! ...
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

des fois la compilations des assemblies éparses donnent des trucs qui marchent alors que ça ne devrait pas compiler, j'ai pas plus de précision là-dessus, désolé.

Sinon mets un point try/catch autour de la ligne générant une erreur et regarde le message de l'exception pour plus de détail.