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

VB.NET Discussion :

Le DataKeysName et les clefs multiples


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Par défaut Le DataKeysName et les clefs multiples
    Bonjour,

    voici le problème :

    Lorsque je click sur un Bouton je dois parcourir tout un gridView et toutes ces clefs... mais quand j'execute la code suivant, mon objet grdDetail.DataKeys est vide...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Protected Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
            Dim i As Integer = 0
            For Each row As GridViewRow In grdDetail.Rows
                Dim idGdfr As String = grdDetail.DataKeys(i).Values("id_gdfr").ToString
                For j As Integer = 1 To row.Cells.Count - 1
                    Dim qte As Integer = 0
                    Dim idProduit As Integer = grdDetail.DataKeys(i).Values(j).ToString
                    qte = CType(row.Cells(j).FindControl("txtQte"), TextBox).Text
                Next 'Cellule
                i += 1
            Next 'Ligne
        End Sub
    A mon avis je n'utilise pas bien les dataKeysName... quelqu'un aurait - il un bon tuto sur le sujet? Tout les trucs que je trouve sur le net sont des cas simplistes avec des SqlDataSource en dur...

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Par défaut
    J'ai essayé plusieurs méthodes pour modifier ce paramètre :

    1 - Avec Attributes.Add
    1-1. Je costruit une chaîne de caratère composée de mes champs clés (que je ne connais pas à l'avance bien sûr.. ce serait trop facile)
    1-2. j'utilise le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.grdDetail.Attributes.Add("DataKeyNames", mesDataKeys)
    la chaîne mesDataKeys à la ttête suivante : "champ1, cahmp2, cahmp3"

    2 - Avec la méthode setValue
    J'appelle le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.grdDetail.DataKeyNames.SetValue("champ1", 0)
    Mais alors là ça plante tout de suite... outOfRangeException... le problème c'est que je ne connais pas le moyen de stipuler la taille de DataKeyNames. J'ai épluché toutes les variables et la seule variable qui s'y approche serait "rank"... qui est readonly

    Là vraiment je sèche.

    Merci d'avance

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Par défaut
    En fait pour résumer, la question serait :

    Comment faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataKeyNames="champ1, champ2, champ3"
    mais dans le code behind...? Pas dans l'aspx/ascx

  4. #4
    Membre très actif
    Avatar de Cyrilange
    Profil pro
    Inscrit en
    Février 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 268
    Par défaut
    Et bien comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monDataGridView.DataKeyNames = New String() {"champ1, champ2, champ3"}
    Encore fallait-il le savoir car je dois avouer que c'est un peu tordu...
    Qui aurait pu croire que les { étaient utiles en VB

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Par défaut
    Merci pour ta réponse.

    En fait entre temps j'ai effectivement fait ceci mais cimme je ne connais pas le nombre de champs à l'avance j'ai dû faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim tabStr(mesDataKeys.Count - 1) As String
    For i As Integer = 0 To mesDataKeys.Count - 1
         tabStr(i) = mesDataKeys(i)
    Next
    Me.grdDetail.DataKeyNames = tabStr
    mesDataKeys est une datatable auquel j'ajoute une ligne à chaque fois que j'en ai besoin.
    grdDetail est le gridView en question...

  6. #6
    Membre très actif
    Avatar de Cyrilange
    Profil pro
    Inscrit en
    Février 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 268
    Par défaut
    Comme j'aime bien faire "mumuse", j'ai repris ton code et je l'ai transformé en ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim tabStr As New StringBuilder
     
            For Each key As String In mesDatakeys
                If tabStr.Length = 0 Then
                    tabStr.AppendFormat("{0}", key)
                Else
                    tabStr.AppendFormat(",{0}", key)
                End If
            Next
     
     Me.grdDetail.DataKeyNames = New String() {tabStr.ToString}
    J'ai vraiment que ça à faire moi

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Par défaut
    ah ce bon vieux stringBuilder...

    Je suis pour

Discussions similaires

  1. Réponses: 19
    Dernier message: 13/07/2006, 13h35
  2. Comment bien gérer les utilisateurs multiples
    Par Vesta dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/06/2006, 08h48
  3. requette pour récuperer les clefs d'une table
    Par mauroyb0 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 15/04/2006, 16h19
  4. Clic sur les select multiple
    Par mic79 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/07/2005, 15h44
  5. [VB6]Prob avec les requêtes multiples
    Par cammipascal dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 30/03/2004, 18h46

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