DatagridView et choisir les collonnes
Bonjour à vous,
Besoin d'aide ou d'une piste pour un bout de code...
J'ai télécharger cette application (Afficher le contenu d'un fichier texte dans un DatagridView et choisir les colonnes à afficher)
Au niveau du formulaire (Colonnes.vb) je souhaiterai ajouter un message pour me dire le nombre de colonne choisi par l'utilisateur.
J'ai ajouté sur le Click du bouton1 un msgbox....en fin du code.
Code:
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 34 35 36 37 38 39 40 41
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim UnNuméro As Integer = LeDset.Tables.Count - 1
Dim NomTable As String = String.Concat("Table_", UnNuméro.ToString)
Dim UneNouvelleRangée As DataRow = Nothing
'Faire la liste des colonnes qui doivent être affichées.
ListeColonnesàGarder.Clear()
For Each rangée As DataRow In TableColonnes.Rows
If rangée.Item("Visible") = True Then
Try
ListeColonnesàGarder.Add(rangée.Item("Nom"))
Catch ex As Exception
End Try
End If
Next
Select Case My.Settings.bouton
Case "affichage"
'On affiche les colonnes
'sans extraire les colonnes
'choisies dans une npouvelle table
TraiteLesColonnes()
Me.DataGridView1.DataSource = TableColonnes
Case "table"
'Les colonnes choisies seront extraites
'dans une nouvelle table
Dim LaNouvelleTable As DataTable = My.Forms.Form1.DSet.Tables.Add(NomTable)
For Each UneColonne As String In ListeColonnesàGarder
LaNouvelleTable.Columns.Add(UneColonne)
Next
For Each UneRangée As DataRow In TableInitiale.Rows
UneNouvelleRangée = LaNouvelleTable.Rows.Add
For Each UneColonne As String In ListeColonnesàGarder
UneNouvelleRangée.Item(UneColonne) = UneRangée.Item(UneColonne)
Next
Next
My.Forms.Form1.AfficheTable(LaNouvelleTable)
End Select
MsgBox(ListeColonnesàGarder.Count)
End Sub |
J'obtiens un résultat qui n'est pas cohérent avec la valeur réelle...d'autant que j'ai mis UneRangée.Item("Visible") = False ....dans le code de :
Private Sub Colonnes_Load(sender As Object, e As EventArgs) Handles Me.Load
Comme ça les cases sont décochées....et je souhaiterai qu'a chaque click le mesgbox me dise 1 et puis 2 et puis 3.....humm ou totalise le nombre total....:roll:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
Private Sub Colonnes_Load(sender As Object, e As EventArgs) Handles Me.Load
'Affiche une liste des noms de champs (colonnes)
'dans un second DataGridView
'La seconde colonne permet de choisir
'quelles colonnes resteront, ou seront, affichées
Me.RadioButton1.Checked = True
Dim UneRangée As DataRow = Nothing
TableColonnes = My.Forms.Form1.DSet.Tables("Colonnes")
If Not IsNothing(TableColonnes) = Nothing Then
' Catch ex As Exception
TableColonnes = My.Forms.Form1.DSet.Tables.Add("Colonnes")
With TableColonnes
.Columns.Add("Nom", GetType(String))
.Columns.Add("Visible", GetType(Boolean))
For Each UneColonne As DataColumn In TableInitiale.Columns
UneRangée = .Rows.Add
UneRangée.Item("Nom") = UneColonne.ColumnName
UneRangée.Item("Visible") = False 'ICI J AI REMPLACE PAR FALSE
Next
End With
End If
Me.DataGridView1.DataSource = TableColonnes
End Sub |
Je n'ai visiblement pas beaucoup de jugeote, car ça fait dix plombes que je cherche.....:marteau:
Merci de votre aide...