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 :

Lire les colonnes d'un DataRow


Sujet :

ASP.NET

  1. #1
    Membre expérimenté
    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 : 55
    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
    Par défaut Lire les colonnes d'un DataRow
    Salut

    Je voudrais lire les colonnes d'un DataRow, sans me préoccuper du nombre ou de ce qu'il y a dedans.

    J'ai du louper un épisode, ou je dois être à côté de la plaque, parce que, ça me paraissait simple, mais en fait non !

    Donc, j'ai mis au point une Proc Stock qui me retourne une ligne d'enregistrement et une seule. Je charge ça dans une dataTable.

    Ensuite, je lis la bestiole pour afficher betement le contenu de chaque champs dans un Label, que me mets dans une Cell, puis dans une Row puis dans une Table.

    Voici mon code qui m'affiche le nom du champ et pas le contenu du champ. L'ennui c'est que je ne trouve pas le moyen d'accéder au contenu du champ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim InfoMembre As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.MEET_FicheComplete '" & GetApplicationGUID().ToString & "', '" & GetUserGUID().ToString & "', 'Recherche', 'FicheComplete'")
            For Each enr As DataColumn In InfoMembre.Columns
     
                Dim l As New Label
                l.Text = enr.ToString
                Dim row As New TableRow
                Dim cel As New TableCell
                cel.Controls.Add(l)
                row.Cells.Add(cel)
                tblGene.Rows.Add(row)
            Next
    Merci pour votre aide.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut
    Salut Zoofy,

    De mon côté, pour parcourir les datatables, j'utilise les datarows.
    Je ne connais pas tes classes personnalisées mais ce ne serait pas plus simple si c'est possible ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    dim r as datarow
     
    for each r in madatable.rows
     
                Dim l As New Label
                l.Text = r(ton_indice_de_colonne).ToString
                Dim row As New TableRow
                Dim cel As New TableCell
                cel.Controls.Add(l)
                row.Cells.Add(cel)
                tblGene.Rows.Add(row)
    
    next

  3. #3
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Merci PredAlpha

    En fait non, le code que tu proposes je l'utilise lorsque j'ai plusieurs Rows, mais là, j'en ai qu'une seule.

    Ce que je veux, c'est lire les colonne, pas les lignes.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut
    ah oki, j'avais pas tout pigé. Et ça ce serait mieux ?

    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
    dim r as datarow
    dim i as integer
     
    'on suppose que tu as chargé la datarow r avec une ligne de ta datatable
     
    for i = 0 to madatable.columns.count - 1
     
    Dim l As New Label
    l.Text = r(i).ToString
    Dim row As New TableRow
    Dim cel As New TableCell
    cel.Controls.Add(l)
    row.Cells.Add(cel)
    tblGene.Rows.Add(row)
     
    next i

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim InfoMembre As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.MEET_FicheComplete '" & GetApplicationGUID().ToString & "', '" & GetUserGUID().ToString & "', 'Recherche', 'FicheComplete'")
            For i = 0 to InfoMembre.Columns.Count - 1
     
                Dim l As New Label
                l.Text = InfoMembre(0)(i).ToString
                Dim row As New TableRow
                Dim cel As New TableCell
                cel.Controls.Add(l)
                row.Cells.Add(cel)
                tblGene.Rows.Add(row)
            Next

  6. #6
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Merci les gars.

    Vos codes sont sensiblement dans la même veine.
    ça marche bien, mais vos idées m'ont ouvert l'esprit vers un autre truc que je trouve plus mieux.
    Maintenant, j'aimerais bien que puissiez me dire si c'est plus ou moins performant que vos idées. Et je parle bien de performances pures et dures. Si je peux économiser la moindre milisecondes de traitement, je suis preneur.

    L'idée est véritablement de ce détacher de toute contingences de nomamge ou de comptage, la requête SQL devant retourner à la fois les moyens compter le nombre de champ, ainsi que le nom de ces champs.
    En fait, j'ai d'autre table dans ma base qui contiennent le nom des champs et en déduise leur "type", information dont je me sert pour faire des traintements sur les champs en question.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim InfoMembre As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.MEET_FicheComplete '" & GetApplicationGUID().ToString & "', '" & GetUserGUID().ToString & "', 'Inscription', 'FicheComplete'")
            For Each enr As DataColumn In InfoMembre.Columns
     
                Dim l As New Label
                l.Text = CStr(InfoMembre.Rows(0).Item(enr.ToString))
                Dim row As New TableRow
                Dim cel As New TableCell
                cel.Controls.Add(l)
                row.Cells.Add(cel)
                tblGene.Rows.Add(row)
            Next

  7. #7
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Perso, je pense que c'est plus rapide d'accèder par l'index que par le nom de la colonne.
    Cependant, tu chipotes pour des ms alors que tu te trouves dans un environnement web. Les ms gagnées seront bien négligeables par rapport aux temps de transferts de ta page

  8. #8
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Chipotage, oui et non. Le site concerné est un site de rencontre qui aura (je l'espère) beaucoup de trafic et d'interrogation de BD, du coup, chaque miliseconde gagnée sur multipliée par le nombre de visiteur et de requête par visiteur.

    Vois tu le côté exponentiel de la chose ?

    Pareil pour mes proc stock, je bosse en optimisation à bloc avec les index, les type de donnée, la rédaction des SELECT tout y passe.

    Merci pour le coup de main.

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

Discussions similaires

  1. [ADA] Lire les colonnes d'un fichier
    Par ApolloNaute dans le forum Ada
    Réponses: 5
    Dernier message: 07/01/2014, 09h01
  2. Réponses: 3
    Dernier message: 02/11/2011, 15h38
  3. Réponses: 1
    Dernier message: 16/05/2007, 15h52
  4. lire un fichier texte et separer les colonnes
    Par turk93390 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 29/12/2006, 13h20
  5. Réponses: 1
    Dernier message: 29/12/2005, 18h04

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