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 :

Utilise un CascadingDropDown (le remplir)


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Utilise un CascadingDropDown (le remplir)
    Bonjour

    J'essai de mettre en oeuvre un série e liste déroulante en cascade, le choix de la première rempli la suivante et ainsi de suite.

    J'ai trouvé la doc du AjxControlToolKit censé faire cela : http://www.asp.net/AJAX/AjaxControlT...gDropDown.aspx

    Outre le fait que l'exemple de code soit fait en C# (j'ai réussi à comprendre comment il fonctionne) je n'arrive aps àcompendre comment ils vont chercher les donéne dans la base.

    Visiblement ils utilisent un objet maison Cars qui retourne un truc que je n'arrive pas à définir.

    Alors questions :
    - pouvez vous m'aider à comprendre comment ils vont chercher les données pour les mettre dans la DDL
    - connaissez vous un autre système (plus simple) pour faire ce que je cherche à faire

    Merci d'avance.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Membre averti Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Points : 363
    Points
    363
    Par défaut
    Salut Zooffy,

    ca ressemble au l'autocompleteExtender que tu as déja mis en place.
    Cela se base sur un service et la méthode du service.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ServicePath="CarsService.asmx"
    ServiceMethod="GetDropDownContents"
    Pour faire plus simple et sans rechargement de page, tu peux mettre des dropdowlists dans des ajax updatepanel et implementer le selectindexchange de tes DropDownLists.

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Jusque là, j'ai suivi et c'est vrai que ça y ressemble.
    Sauf que, là, il veut en retour de WebMethode un CascadingDropDownNameValue a lieu d'un Array.

    Et là, je n'arrive pas à lui donner ce qu'il veut.

    Voici ma WebMethode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <WebMethod()> _
        Public Function RemplirListeGeoPolitique(ByVal knownCategoryValues As String, ByVal category As String) As AjaxControlToolkit.CascadingDropDownNameValue
     
            Dim valret As New List(Of AjaxControlToolkit.CascadingDropDownNameValue())
            Dim dt As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.GLOBAL_ContenuZone" & category)
     
            For Each r As DataRow In dt.Rows
                valret.Add(New AjaxControlToolkit.CascadingDropDownNameValue(r(0), r(1)))
            Next
     
            Return valret.ToArray()
        End Function
    Et sur la ligne du valret dans le For Each il me dit :
    Une valeur de type 'AjaxControlToolkit.CascadingDropDownNameValue' ne peut pas être convertie en 'Tableau à 1 dimension(s) de AjaxControlToolkit.CascadingDropDownNameValue'.
    Je comprends pas ce qu'il veut mettre dedans. Pour les arguments donné par l'autocomplétion sont simples : deux String.

    Vois tu d'où pourrais provenir le souci ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    Membre averti Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Points : 363
    Points
    363
    Par défaut
    essaies de mettre r(0).tostring et r(1).tostring

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci. J'ai avancé entre les deux. Je sais pas ce que j'ai pu modifier, mais ça c'est mis à fonctionner.

    Par contre, je bloque maintenant sur la cascade elle même
    Je rempli bien ma première liste. Ce qui occupe ici est de décensdre dans le découpage géopolitique de la France. Donc ma première liste est celle des régions.

    Ensuite je voudrais avoir la liste des départements contenus dans la région choisie. Mais là il me met un message d'erreur. Je pense que je dois avoir un souci pour comprendre l'utilisation des deux variables en paramètre.
    Voici le code HTML de la page :
    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
     
    <asp:DropDownList ID="lstRegion" runat="server"></asp:DropDownList><br />
    <asp:DropDownList ID="lstDepartement" runat="server"></asp:DropDownList><br />
    <asp:DropDownList ID="lstArrondissement" runat="server"></asp:DropDownList><br />
    <asp:DropDownList ID="lstVille" runat="server"></asp:DropDownList><br />
    <asp:Button ID="btnChoix" runat="server" Text="Choisir" />
    <ajaxToolkit:CascadingDropDown ID="cddRegion" runat="server"
        TargetControlID="lstRegion"
        Category="2"
        PromptText="Choisissez une région"
        ServicePath="~/GMPhotoProfil.asmx"
        ServiceMethod="RemplirListeGeoPolitique"
    ></ajaxToolkit:CascadingDropDown>
    <ajaxToolkit:CascadingDropDown ID="cddDepartement" runat="server"
        TargetControlID="lstDepartement"
        ParentControlID="lstRegion"
        Category="3"
        PromptText="Choisissez un département"
        ServicePath="~/GMPhotoProfil.asmx"
        ServiceMethod="RemplirListeGeoPolitique"></ajaxToolkit:CascadingDropDown>
    Puis le code la méthode, dernière version :
    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
     
    <WebMethod()> _
        Public Function RemplirListeGeoPolitique(ByVal knownCategoryValues As String, ByVal category As String) As Array
            Dim valret As New List(Of AjaxControlToolkit.CascadingDropDownNameValue)
            Try
                If knownCategoryValues = "" Then
                    knownCategoryValues = "199"
                End If
                Dim dt As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.GLOBAL_ContenuZone " & knownCategoryValues)
                For Each r As DataRow In dt.Rows
                    valret.Add(New AjaxControlToolkit.CascadingDropDownNameValue(r(0), r(1)))
                Next
            Catch ex As Exception
                Logage(ex.Message)
            End Try
            Return valret.ToArray()
        End Function
    Et le message d'erreur que je trap avec le ex.mesasge :
    Syntaxe incorrecte vers ':'.
    Pas trés explicite......

    Sachant que ma Proc Stock prends comme paramètre l'identifiant d'une zone (région, département, ...) et va chercher ce qu'il faut dans la table pour remonter une liste d'identifiant et de nom.
    Sachant aussi que ma table de GeoPolitique est architecturée sur le principe des arbres décisionnels de notre bien aimé SQLPRO.

    Du coup, peut être que je n'utilise pas bien les paramètres.

    Qu'en penses tu ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  6. #6
    Membre averti Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Points : 363
    Points
    363
    Par défaut
    Arf, je n'ai pas assez étudié ce contrôle. Mais j'ai trouvé qqchose d'interressant sur ce site.

    http://aspalliance.com/1183_Creating_a_CascadingDropDown_Using_AJAX.all

  7. #7
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bon, je crois que j'ai avancé, enfin à priori, sauf que je capte pas ce que j'ai trouvé. Grâce à mon outil de logage je peux capter plein de chose qu'on ne voit pas en AJAX et là j'ai découvert un truc qui me laisse sur mon céans, parce que je connais pas.

    Dans la variable knownCategoryValues y a un truc qui se rajoute, liste aprés liste. Du coup, j'ai changé la variable category dans chaque CDD.

    Maintenant, j'ai repris un morceau de code de l'exemple que je comprenais pas et je pense que c'est lié. Sauf que j'arrive pas à le faire fonctionner.

    Dans l'exmple ils utilisent un StringDictionary, visiblement pour envoyer vers leur objet maison l'identifiant de la catégorie retenu par la précédente liste. Ils mettent aussi un bout de code (voir plus loin) qui permet de parser ce truc en Integer (et à mon avis en ce que tu veux pour l'envoyer vers la BDD).

    Voici la chaine de knownCategoryValues qui évolue liste aprés liste :
    [rien]
    2:200;
    2:200;3:224;
    J'ai mis ça dans le code, avant mon test pour savoir si c'est vide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                Dim kv As StringDictionary = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues)
                Dim modelId As Integer
                If Not kv.ContainsKey(category) OrElse Not Int32.TryParse(kv(category), modelId) Then
                    Logage("que dalle")
                End If
                Logage(modelId)
    A chaque liste choisie, même la première (ce qui est normal) il me marque "que dalle" et sur le deuxième logage il me donne 0.

    Du coup, j'en déduis que l'orsque je j'aurais compris comment extraire la dernière valeur de la liste, je pourrais l'envoyer en paramètre de la Proc Stock.

    Vois de quoi ça parle ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  8. #8
    Membre averti Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Points : 363
    Points
    363
    Par défaut
    Essaies ceci pour récupérer ta clef

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ' la chaine à l'index 1 est l'élément sélectionné dans ta dropdownliste 
    Dim _categoryValues As String() = knownCategoryValues.Split(":", ";") 
    ' Converti l'élément en entier à l'index 1 pour obtenir ton identifiant
    Dim _carID As Integer = Convert.ToInt32(_categoryValues(1))

  9. #9
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Je viens d'essayer ton bout de code. Je maitrise pas bien le Split.

    Pour 'linstant il me dit ça :
    La résolution de surcharge a échoué, car aucun 'Split' accessible ne peut être appelé sans conversion restrictive :
    En bloquant sur knownCategoryValues.Split(":", ";")

    Mais le truc du StringDictionary, c'est pas bien ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  10. #10
    Membre averti Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Points : 363
    Points
    363
    Par défaut
    excuses mopi zooffy
    c'est plutot uniquement ça la commande

    knownCategoryValues.Split(";")

    //c'est pour voir si ça marche , je pense que ton string dictionnary fonctionne aussi

  11. #11
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Alors aprés correction j'ai un autre mesasge d'erreur, mais sur le deuxième passage :
    Le format de la chaîne d'entrée est incorrect.
    Quant au StringDictionnary, ben j'arrive toujours pas à le faire fonctionner.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  12. #12
    Membre habitué
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 134
    Points
    134
    Par défaut
    Citation Envoyé par predalpha Voir le message
    Essaies ceci pour récupérer ta clef

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ' la chaine à l'index 1 est l'élément sélectionné dans ta dropdownliste 
    Dim _categoryValues As String() = knownCategoryValues.Split(":", ";") 
    ' Converti l'élément en entier à l'index 1 pour obtenir ton identifiant
    Dim _carID As Integer = Convert.ToInt32(_categoryValues(1))

    Bonjour! j'ai déjà rencontré ce problème avec ce contrôle.
    Essaie de déclarer _categoryValues comme un array plutôt.
    Et pour la conversion en int32, je te conseille de faire un test d'abord du genre isNumeric(_categoryValues(1)), pour éviter des erreurs non prévues pour le moment, mais il suffit que ce soit à null et ça plantera ton appli.

    A plus.

  13. #13
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour votre les gars.

    Voici où en est ma WebMethod et j'avoue que je commence à perdre les pédales

    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
     
    <WebMethod()> _
        Public Function RemplirListeGeoPolitique(ByVal knownCategoryValues As String, ByVal category As String) As Array
            Logage("knownCategoryValues : " & knownCategoryValues)
            Dim valret As New List(Of AjaxControlToolkit.CascadingDropDownNameValue)
            Dim IdReg As Integer = 0
            Try
                If knownCategoryValues = "" Then
                    IdReg = "199"
                Else
                    ' la chaine à l'index 1 est l'élément sélectionné dans ta dropdownliste 
                    Dim _categoryValues As Array = knownCategoryValues.Split(";")
                    ' Converti l'élément en entier à l'index 1 pour obtenir ton identifiant
                    Dim _carID As Integer = Convert.ToInt32(_categoryValues(1))
                    Logage("carid : " & _carID)
                    IdReg = _carID
                End If
                Logage("idreg : " & IdReg)
                Dim dt As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.GLOBAL_ContenuZone " & IdReg)
                For Each r As DataRow In dt.Rows
                    valret.Add(New AjaxControlToolkit.CascadingDropDownNameValue(r(0), r(1)))
                Next
            Catch ex As Exception
                Logage(ex.Message & ex.InnerException.ToString)
            End Try
            Return valret.ToArray()
        End Function
    Vu mes retours de Logage (ma fonction qui inscrit des trucs dans un ficher texte) il bloquerait sur la déclaration de _carId, mais ce qu'il y a de bizare, c'est le catch ne fonctionne pas, j'ai pas de message en retour.

    Vous voyez d'où peut provenir le souci ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  14. #14
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Je crois que j'ai trouvé un truc mais je sais pas comment l'exploiter.

    J'ai testé le contenue de ça :
    Et il me retourne ça :
    2:200
    et category est égale à 3.

    Donc j'en déduis qu'il m'envoi la category de la DDL suivante avec l'Item selectionné de la DDL précédente. Je pense également que pour le troisième passage il m'enverra le tout, puis une deuxième série avec les nouvelle valeur, donc category à 4 et l'Item selectionné de la DDL 3.

    Précision : les category des DDL sont 2, 3, 4, 5 car ces valeurs correspondent à un niveau de découpage dans ma BDD. Toutefois, je peux m'en séparer et utiliser category autrement.

    Alors du coup, je pense qu'il faut mettre knownCategoryValues sous forme de tableau qui contient une série de tableau lui même contenant deux valeurs.
    Ensuite il faut que je récupère le tableau contenant la valeur de category et l'id de l'item sélectionné pour trouver l'ID à envoyer à ma Proc Stock.

    Sauf que ça, je sais pas faire. Vous avez une idée ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  15. #15
    En attente de confirmation mail
    Inscrit en
    Août 2007
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 174
    Points : 133
    Points
    133
    Par défaut
    Mais pourquoi tu n'utilises pas simplement le StringDictionnary ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
           [WebMethod(EnableSession = true)]
            public CascadingDropDownNameValue[] GetCCialByBranch(string knownCategoryValues, string category)
            {
                StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
     
                long idBranch;
                if (!kv.ContainsKey("undefined") || !long.TryParse(kv["undefined"], out idBranch))
                { return null; }
     
                //Apppel au service
    ....
    }
    En 2 lignes tu récuperes ton Id pour la Proc.

  16. #16
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide

    Citation Envoyé par User.Anonymous Voir le message
    Mais pourquoi tu n'utilises pas simplement le StringDictionnary ??

    En 2 lignes tu récuperes ton Id pour la Proc.
    Ben parce que, comme je l'ai dit plus haut, je sais pas le faire fonctionner.
    Du coup, avec ton bout de code (qu'il va falloir que je trduise en VB pour bien le comrpendre, je vais peut être le mettre en oeuvre et réussir à capter comment marche ce truc qui à l'air vachement bien.

    Je test ça de suite et je te tiens au courant, mais je pense qu'il va me falloir un coup de main car si ça marche du premier coup, c'est que je dois ête cocu ! ! !

    Sinon, pour l'autre solution, ben j'ai bricolé un truc pas trés catholique, voyez plutôt :
    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
     
        <WebMethod()> _
        Public Function RemplirListeGeoPolitique(ByVal knownCategoryValues As String, ByVal category As String) As Array
            Dim valret As New List(Of AjaxControlToolkit.CascadingDropDownNameValue)
            Dim IdReg As Integer = 0
            Try
                If knownCategoryValues = "" Then
                    IdReg = "199"
                Else
                    ' la chaine à l'index 1 est l'élément sélectionné dans ta dropdownliste 
                    Dim _categoryValues As Array = knownCategoryValues.Split(";")
                    ' Converti l'élément en entier à l'index 1 pour obtenir ton identifiant
                    Dim strReg As String = _categoryValues(category)
                    IdReg = Convert.ToInt32(Right(strReg, strReg.Length - strReg.LastIndexOf(":") - 1))
                End If
                Dim dt As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.GLOBAL_ContenuZone " & IdReg)
                For Each r As DataRow In dt.Rows
                    valret.Add(New AjaxControlToolkit.CascadingDropDownNameValue(r(0), r(1)))
                Next
            Catch ex As Exception
                Logage(ex.Message & ex.InnerException.ToString)
            End Try
            Return valret.ToArray()
        End Function
    Et j'ai remplacé les category de mes DDL par la bonne valeur : 10 pour le premier mais j'aurais pu mettre toto et 0,1,2 pour els suivantes, comme ça, c'est l'ordre qu'il faut pour le tableau. Enfin, ça marche. Mais il est vrai que le Dictionnary à l'air plus sexy, alors je vais essayé, comme ça j'aurais les deux et certainement appris un truc.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  17. #17
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bon, ben comme prévu, le bout de code que tu em donne veux pas se traduire en VB dans le traducteur en ligne que j'ai trouvé.

    L'ennui c'est que je comprends pas ce que fais ce code vu que je capte rien au C#. Ce qui coince c'est le IF. Je crois que même en VB , les IF à trois branches, j'y arrive pas (mais je ne sais même plus si on peut el faire en VB.NET)

    Faut aps perdre de vue que (mais je asis que c'est pas écrit dans ma signature...) je ne suis jamais allé à l'école d'ingé. J'ai tout appris sur le tas depuis lâge de 22 ans. Du coup, j'ai des concepts de base qui m'échappe pas mal.

    Vois tu ce qui pourrais coincer ?
    Pourrais tu traduire ce bout de code en VB.NET ?

    Merci d'avance.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  18. #18
    En attente de confirmation mail
    Inscrit en
    Août 2007
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 174
    Points : 133
    Points
    133
    Par défaut
    Je te rassures je n'ai pas été en école d'ingé non plus

    Pour ton code en VB, ça devrait donner quelque chose comme ç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
     
    Imports AjaxControlToolkit
    Imports System.Collections.Specialized
    Imports System.Collections.Generic
     
    (...)
     
        <WebMethod()> _
        Public Function RemplirListeGeoPolitique(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
            Dim kv As StringDictionary
            kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues)
            Dim Id As Long
     
            If (kv.ContainsKey(("undefined") = False Or Long.TryParse(kv("undefined"), Id) = False)) Then
                Return Nothing
            End If
     
            'Acces aux données
            Dim dt As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.GLOBAL_ContenuZone " & Id)
     
            Dim values As List(Of CascadingDropDownNameValue)
     
     
            For Each r As DataRow In dt.Rows
                values.Add(New CascadingDropDownNameValue(r("Id").ToString(), r("Name").ToString(), False))
            Next
     
            Return values.ToArray()
        End Function
    Dans le New CascadingDropDownNameValue :
    le 1ème paramètre sera le dataValueField du ddl
    le 2ème paramètre sera le dataTextField du ddl
    le 3ème paramètre sera si le champ est selectionné ou non

    En tous cas, je n'ai pas fait de VB depuis longtemps et je sais pourquoi maintenant

    D'ailleurs si c'est un webService indépendant tu peux le faire le C# même si le reste de ton appli est en VB

  19. #19
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Alors, aprés avoir essayé ce bout de code j'ai un message d'erreur qui apparait assez tôt :
    La conversion de la chaîne "undefined" en type 'Boolean' n'est pas valide.
    Vois tu d'où pourais provenir ce souci, parce que là, je suis un poil largué sur le test conditionnel.

    Quant à programmer mon service web en C#, j'aimerais bien, mais il faudrait que j'apprenne le langage pour ça et j'avoue que j'ai asp trop le temps en ce moment. Je suis à deux doigts de la mise en production, donc pas le temps de tout apprendre.
    Par contre, je garde cette idée pour plus tard car j'ai la ferme intention de me lancer dans les MMO, donc si je veux exploiter XNA j'ai intérêt à me mettre au C#
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  20. #20
    En attente de confirmation mail
    Inscrit en
    Août 2007
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 174
    Points : 133
    Points
    133
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            If (kv.ContainsKey("undefined") = False Or Long.TryParse(kv("undefined"), Id) = False) Then
                Return Nothing
            End If
    1 parenthèse de trop

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [RegEx] Sprintf / utilisation des espaces pour remplir une ligne
    Par exilquery dans le forum Langage
    Réponses: 4
    Dernier message: 07/10/2012, 17h46
  2. Réponses: 2
    Dernier message: 10/02/2012, 15h22
  3. Utilisation de DHTML pour remplir un formulaire
    Par OlivierGrenoble dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/02/2010, 23h36
  4. utilisation de popup pour remplir un formulaire php
    Par kro35 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/06/2006, 12h03
  5. Réponses: 36
    Dernier message: 13/05/2004, 18h22

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