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

Windows Forms Discussion :

[VB.NET] [DataGrid] recuperer l'index d'une ligne


Sujet :

Windows Forms

  1. #1
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut [VB.NET] [DataGrid] recuperer l'index d'une ligne
    Bonjour,
    Est-ce possible de declencher un evenement (genre appeller une methode) lorsqu'on clique sur une ligne d'un datagrid ???
    Je voudrais effectuer une requete basee sur les valeurs de la ligne selectionnee dans mon datagrid et ensuite afficher les resultats dans une popup.

    Merci d'avance !!!

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 56
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    c'est possible mais il faut un peu bidouiller... En gros l'idée est de générer un postback lorsque tu cliques sur une ligne de ton datagrid.
    1) Rajoute une colonne à ton datagrid qui contient un linkbutton permettant de sélectionner une ligne.
    2) Rends cette colonne invisible.
    3) Intercepte l'événement PreRender de ton Datagrid, mets-y un code comme celui-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach(DataGridItem item in dg.Items)
    {
      item.Attributes["onclick"] = Page.GetPostBackClientHyperlink(item.Cells[Indice de la colonne qui contient le linkbutton].Controls[0]);
    }
    GetPostBackClientHyperlink permet de simuler un postback à partir d'un contrôle, en l'occurence le linkbutton de sélection...

  3. #3
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    ca ressemble a du web form ca non ?
    Moi je voudrais faire ca dans un windows form. Est-ce la meme chose ?

  4. #4
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Bon je me reponds a moi meme....
    J'ai essaye ca, quand je clique sur un bouton j'appelle le code suivant:
    (dgEquivalents est mon datagrid )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            Dim selectedRow As Integer = dgEquivalents.CurrentRowIndex()
            Dim test As Integer = dgEquivalents.Item(selectedRow, 0)
    comme ca je peux recuperer la valeur (de type integer) qui se trouve dans ma premiere colonne a la ligne selectionnee.
    MAIS LE PROBLEME : dgEquivalents.CurrentRowIndex() me renvoit toujours 0 Pourquoi ????

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 56
    Points : 64
    Points
    64
    Par défaut
    Ooooops désolé je pensais qur tu parlais du DataGrid WebForms
    Si je me rappelle bien il faut que tu intercepte l'événement MouseUp de ton DataGrid, dans les données de l'évent tu auras les coordonnées du point cliqué. A partir de là tu n'as qu'à appeler la méthide HitTest() pour déterminer la ligne qui t'intéresse...

  6. #6
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Personne ne sait ?

  7. #7
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    J'ai essaye la methode soit disante bonne et j'ai toujours le meme probleme. voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
            Dim drv As DataRowView
            Dim cm As CurrencyManager = CType(BindingContext(dgEquivalents.DataSource), _
            CurrencyManager)
            drv = dgEquivalents.DataSource.Tables(0).DefaultView.Item(cm.Position)
            MessageBox.Show(drv.Item(0).ToString)
    cm.Position vaut toujours 0 quel que soit la ligne selectionnee...

  8. #8
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Quelque chose qui fonctionne mais qui n'est ni performant, ni très bien codé mais j'ai pas trouvé mieux (j'ai le même problème que toi en fait):

    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
     
    			int line=0;
    			try
    			{
    				while (true)
    				{
    					if (DgList.IsSelected(line))
    						break;
    					line++;
    				}
    			}
    			catch (Exception)
    			{
    				line=1;
    			}
    Des lors tu sais récupérer la valeur à l'aide de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string val=DgList[line, 0].ToString();
    Si qqn trouve mieux...

    Didier Danse

    Most Valuable Profesionnal SharePoint
    Microsoft Certified Application Developer
    Mes articles sur developpez.com
    Mon site perso


  9. #9
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    MEGA GRAND MERCI !!!
    Je galerais depuis ce matin la dessus.

  10. #10
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Evidemment c'est tres nul comme soluce. Faire une boucle pour trouver l'élément c'est vraiment pas ce qu'il faudrait faire mais j'ai pas trouvé mieux.

    Didier Danse

    Most Valuable Profesionnal SharePoint
    Microsoft Certified Application Developer
    Mes articles sur developpez.com
    Mon site perso


  11. #11
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Mais sais tu as quoi est du le fait que l'on ne peut pas recuperer l'index de la ligne selectionnee en utilisant les methodes du framework .net ? D'autres personnes ont du avoir ce genre de probleme avant j'imagine...

  12. #12
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Aucune idée...

    J'fais pas beaucoup de développement WinForm en plus. Enfin ca commence à venir mais bon...

    Didier Danse

    Most Valuable Profesionnal SharePoint
    Microsoft Certified Application Developer
    Mes articles sur developpez.com
    Mon site perso


  13. #13
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Bon ben si quelqu'un a une meilleure soluce... merci de nous faire signe !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/05/2006, 16h50
  2. [C#] Recuperer le contenu d'une ligne dans datagrid
    Par thierry2001 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/09/2005, 14h56
  3. [VB.NET] Datagrid recuperation record
    Par cosmos38240 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/07/2005, 17h40
  4. [vb.net][datatable] recuperer l'index d'une ligne
    Par graphicsxp dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/07/2005, 15h17
  5. [VB.NET] Datagrid - Récupérer CheckBox cochées
    Par nmerydem dans le forum ASP.NET
    Réponses: 16
    Dernier message: 18/05/2004, 13h28

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