none
[vb 2008 ex ] Datagrideview RRS feed

  • Question

  • Bonjour / Bonsoir,

    J'ai un form avec un datagridview que je nomme grd_Resultat.

    Je crée trois colonnes ( ex Article, Designation, prix )

    Je lis un fichier .csv, ou j'ajoute les données lu (là pas de problème ).

    J'aimerais :

    1) Soit je clic sur une cellule, et je récupère la ligne complète dans un label par ex.

    2) Soit rendre les colonnes 1,2 inactive et que la sélection se face que par la colonne  Article.

    J'ai essayé

    Label.Text = CType(grd_Resultat.CurrentCell.Value, String), fonctionne bien mais me donne le résultat de chaque cellule sélectionné.

    J'ai regardé dans SelectedRows, CurrentRow, mais rien de concluant.

    D'avance merci.

    Marco

     

     

    mercredi 13 octobre 2010 13:15

Réponses

  • Bonjour,

     

    Sur l’évènement CellClick du DataGridView, vous pouvez récupérer l’index de la ligne courante et ensuite vous pouvez construire un string avec toutes les cellules de cette ligne:

    Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

     

            Dim i As Integer

            Dim str As New StringBuilder()

            For i = 0 To Me.DataGridView1.ColumnCount - 1

                str = str.Append(Me.DataGridView1.Item(i, Me.DataGridView1.CurrentCell.RowIndex).Value.ToString())

            Next

     

            Console.WriteLine(str.ToString())

        End Sub

     

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    • Marqué comme réponse Marco67 mercredi 13 octobre 2010 15:33
    mercredi 13 octobre 2010 14:38
  • Bonjour,

     

    System.Text est l’espace de noms de la classe StringBuilder. Il est nécessaire d’importer cet espace de noms pour pouvoir utiliser la classe de cette manière :

    Imports System.Text

    Dim str As New StringBuilder()

     

    Sinon, vous pouvez faire comme ça :

    Dim str As New System.Text.StringBuilder()

     

     

    La méthode Append de la classe StringBuilder retourne la valeur courante du string plus le string du paramètre attaché. Par exemple, si votre objet StringBuilder a la valeur str= »abc » et vous appelez la méthode Append :

    str = str.Append(« yxz ») 

     

    La nouvelle valeur de l’objet str sera « abc » + « xyz », donc « abcxyz ».

     

    DataGridView.Item(a,b) retourne la cellule d’une DataGridView qui correspond aux coordonnées (a,b), c.a.d. la colonne et la ligne. Dans notre cas « i » donne la colonne, et comme nous sommes dans un « for » nous allons prendre toutes les valeurs des colonnes, une par une.

    DataGridView1.CurrentCell.RowIndex donne l’index de la ligne de la cellule courante. Dans notre cas, cet index reste le même pendant le « for », donc le résultat de DataGridView1.Item(i, Me.DataGridView1.CurrentCell.RowIndex) a l’intérieur du « for » est une énumération de toutes les cellules de la ligne en cause. Value.ToString() est la valeur convertie en « string » de la cellule Item(x,y). Pour chaque cellule de la ligne, je prends la valeur et je l’utilise comme paramètre dans str.Append(), ce que fait que pour chaque itération dans le « for » j’ajoute la valeur d’une cellule de ma ligne au résultat final.

     

    Pour mieux comprendre cette ligne de code, essayez de comprendre chaque élément entre parenthèses. Par exemple, une forme plus claire mais moins efficace de cette expression serait :

    Dim x as Integer = Me.DataGridView1.CurrentCell.RowIndex

            Dim string_temporaire as new String()

            string_temporaire = Me.DataGridView1.Item(i, x).Value.ToString()

            str = str.Append(string_temporaire)

     

     

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    vendredi 22 octobre 2010 10:45

Toutes les réponses

  • Bonjour,

     

    Sur l’évènement CellClick du DataGridView, vous pouvez récupérer l’index de la ligne courante et ensuite vous pouvez construire un string avec toutes les cellules de cette ligne:

    Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

     

            Dim i As Integer

            Dim str As New StringBuilder()

            For i = 0 To Me.DataGridView1.ColumnCount - 1

                str = str.Append(Me.DataGridView1.Item(i, Me.DataGridView1.CurrentCell.RowIndex).Value.ToString())

            Next

     

            Console.WriteLine(str.ToString())

        End Sub

     

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    • Marqué comme réponse Marco67 mercredi 13 octobre 2010 15:33
    mercredi 13 octobre 2010 14:38
  • Merci de cette réponse rapide,

    J'ai importer ton code et modifier.

    Il me donne smart-tag que disant que StringBuilder et non défini, et me propose d'importer "System.text" ou bien "System.Text.StringBuilder" entre autre.

    J'ai remplacé par " System.Text.StringBuilder " et celà fonctionne impec.

     

    Pourrait tu m'expliquer un peut plus ton code ??.

     

    Encore merci.

     

    Marco

     

    mercredi 13 octobre 2010 15:05
  • Bonjour,

     

    Quelle est la partie qui vous pose des problèmes?

     

    Cordialement,

    Alex

     

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

    dimanche 17 octobre 2010 09:16
  • Bonjour / Bonsoir,

     

    Par ex StringBuilder connait pas ?.

     

    Ce bout de code

    str = str.Append(Me .DataGridView1.Item(i, Me .DataGridView1.CurrentCell.RowIndex).Value.ToString())

    Voila presque tout quoi lol...

     

    Merci

     

    A+

     


    jeudi 21 octobre 2010 14:50
  • Bonjour,

     

    System.Text est l’espace de noms de la classe StringBuilder. Il est nécessaire d’importer cet espace de noms pour pouvoir utiliser la classe de cette manière :

    Imports System.Text

    Dim str As New StringBuilder()

     

    Sinon, vous pouvez faire comme ça :

    Dim str As New System.Text.StringBuilder()

     

     

    La méthode Append de la classe StringBuilder retourne la valeur courante du string plus le string du paramètre attaché. Par exemple, si votre objet StringBuilder a la valeur str= »abc » et vous appelez la méthode Append :

    str = str.Append(« yxz ») 

     

    La nouvelle valeur de l’objet str sera « abc » + « xyz », donc « abcxyz ».

     

    DataGridView.Item(a,b) retourne la cellule d’une DataGridView qui correspond aux coordonnées (a,b), c.a.d. la colonne et la ligne. Dans notre cas « i » donne la colonne, et comme nous sommes dans un « for » nous allons prendre toutes les valeurs des colonnes, une par une.

    DataGridView1.CurrentCell.RowIndex donne l’index de la ligne de la cellule courante. Dans notre cas, cet index reste le même pendant le « for », donc le résultat de DataGridView1.Item(i, Me.DataGridView1.CurrentCell.RowIndex) a l’intérieur du « for » est une énumération de toutes les cellules de la ligne en cause. Value.ToString() est la valeur convertie en « string » de la cellule Item(x,y). Pour chaque cellule de la ligne, je prends la valeur et je l’utilise comme paramètre dans str.Append(), ce que fait que pour chaque itération dans le « for » j’ajoute la valeur d’une cellule de ma ligne au résultat final.

     

    Pour mieux comprendre cette ligne de code, essayez de comprendre chaque élément entre parenthèses. Par exemple, une forme plus claire mais moins efficace de cette expression serait :

    Dim x as Integer = Me.DataGridView1.CurrentCell.RowIndex

            Dim string_temporaire as new String()

            string_temporaire = Me.DataGridView1.Item(i, x).Value.ToString()

            str = str.Append(string_temporaire)

     

     

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    vendredi 22 octobre 2010 10:45
  • Bonjour / Bonsoir,

     

    Merci pour les explications, c'est un peut plus claire pour moi.

     

    A+

     

    samedi 23 octobre 2010 09:33