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

C# Discussion :

passer un tabelau rempli a une fonction c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut passer un tabelau rempli a une fonction c#
    Bonjour, je galere avec un petit probleme

    J'ai declaré un tableau tab a deux dimensions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string[,] tabStation = new string[ddlAdr.Items.Count,2];
    Je le rempli via un data reader :
    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
    connection.Open();
                System.Data.SqlClient.SqlDataReader oDBDataReader2;
                String Query2 = "SELECT * FROM [StationsServices]";//  where ID_Station =" + ddlAdr.Items[d].Value
                SqlCommand cmdDatabase2 = new SqlCommand(Query2, connection);
                oDBDataReader2 = cmdDatabase2.ExecuteReader();
                int a = 0;
                while (oDBDataReader2.Read() == true)
                {
                    for (int i = a; i < ddlAdr.Items.Count; i++)
                    {
                        tabStation[i, 0] = oDBDataReader2["Adresse"].ToString();
                        tabStation[i, 1] = oDBDataReader2["Name_station"].ToString();
                        a = a+1;
                        break;
                    }
     
                }
                connection.Close();
    Je vérifie a l'aide d'un F9, je constate que mon tableau se rempli avec les 4 lignes que j'ai dans ma bd

    je veux faire un traitement sur ce tableau et je veux le passer a une fonction, mais il me dis que je dépasse mes bornes

    fonction(tabStation[ddlAdr.Items.Count, 1] ) qui st equivalent a tabstation[4,2]

    ma question est : est ce que le fait d'appeler la fonction avec tabstation[4,2] veux dire que je cherche l'element 4,2 ou je parle d'un tableau deja rempli qui a 4 lines et deux colonnes ???

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    Le code gėnėrė me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <input type="submit" name="BtnStations" value="All Stations" onclick="javascript:findAllAddress('System.String[,]','4'); return false;" id="BtnStations" class="button" />

  3. #3
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Quand tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fonction(tabStation[ddlAdr.Items.Count, 1] )
    Tu indiques effectivement que tu veux récupérer l'élément à la "ligne" d'indice ddlAdr.Items.Count et la "colonne" d'indice 1.
    Or en C#/.Net par défaut les tableaux sont indexés à partir de 0, donc l'indice de la dernière "ligne" est ddlAdr.Items.Count - 1.

    Si tu veux juste transmettre le tableau il suffit de faire :

  4. #4
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    Merci pour votre réponse, quand je fais comme tu dis la ligne transmet en html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <input type="submit" name="BtnStations" value="All Stations" onclick="javascript:findAllAddress('System.String[,]','4'); return false;" id="BtnStations" class="button" />
    et la fonction JavaScript le prend comme une chaîne de caractères

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Là c'est un autre souci : tu génères du code JavaScript qui n'a rien à voir avec le code C#.
    Il va falloir produire une représentation JavaScript de celui-ci.
    Par exemple :
    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
    StringBuilder builder = new StringBuilder();
    builder.Append("[");
    for (int i = 0; i < m; ++i)
    {
        builder.Append("[");
        for (int j = 0; j < n; ++j)
        {
            builder.Append(tabStation[i, j]);
            if (j != n - 1)
            {
                builder.Append(",");
            }
        }
        builder.Append("]");
     
        if (i != m - 1)
        {
            builder.Append(",");
        }
    }
    builder.Append("]");
     
    string result = builder.ToString();
    Après il y a mieux que d'inliner la valeur au niveau du handler comme créer une variable dédiée dans le script JavaScript.

    Mais bon ça devrait faire l'affaire.

  6. #6
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    Je n ai rien compris ce bout de code c est à mettre dans la page c# ???
    Sachant que je construit mon tableau 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
    string[,] tabStation = new string[ddlAdr.Items.Count,2];
     
                connection.Open();
                System.Data.SqlClient.SqlDataReader oDBDataReader2;
                String Query2 = "SELECT * FROM [StationsServices]";//  where ID_Station =" + ddlAdr.Items[d].Value
                SqlCommand cmdDatabase2 = new SqlCommand(Query2, connection);
                oDBDataReader2 = cmdDatabase2.ExecuteReader();
                int a = 0;
                while (oDBDataReader2.Read() == true)
                {
                    for (int i = a; i < ddlAdr.Items.Count; i++)
                    {
                        tabStation[i, 0] = oDBDataReader2["Adresse"].ToString();
                        tabStation[i, 1] = oDBDataReader2["Name_station"].ToString();
                        a = a+1;
                        break;
                    }
     
                }
                connection.Close();
     
                BtnStations.Attributes.Add("onClick", "javascript:findAllAddress('" + tabStation + "','" + ddlAdr.Items.Count + "'); return false;");
    Et ma fonction JavaScript est comme ceci :
    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
    function findAllAddress(tabStation, n) {
     
        var text,text2 = "";
        for (var i = 0; i < n; i++) {
     
            var address = tabStation[i][0];
            var name = tabStation[i][1];
     
            geocoder.geocode({ 'address': address }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) { 
     
                    var addrLocation = results[0].geometry.location;
                    map.setCenter(addrLocation);
     
                    document.getElementById('lat').value = results[0].geometry.location.$a;
                    document.getElementById('lng').value = results[0].geometry.location.ab;
     
                    var addrMarker = new google.maps.Marker({
     
                        position: addrLocation,
                        map: map,
                        title: results[0].formatted_address
                    });
                    markers.push(addrMarker);
                }
            });
            text += tabStation[i][0];
            text2 += tabStation[i][1];
        }
     
        alert(n + '/' + text+'/'+text2);
     
    }

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/09/2006, 12h25
  2. Réponses: 3
    Dernier message: 28/11/2005, 12h15
  3. Réponses: 1
    Dernier message: 18/11/2005, 11h38
  4. Passer le résultat (tableau) d'une fonction
    Par coyote90 dans le forum Access
    Réponses: 3
    Dernier message: 10/11/2005, 19h56
  5. passer FILE* en argument d une fonction
    Par Monsieur_Manu dans le forum C
    Réponses: 9
    Dernier message: 10/04/2003, 17h56

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