Bonjour,
J'ai codé un application VB.NET en FrameWorks 3.5 sous XP . J'ai VS 2008 sur mon poste de travail.
Le code qui va suivre fait une recherche dans une colonne du grid. Le grid affiche les infos venant d'une BD Access. C'est une table que j'ai pour ce programme.
Il y a un champ pour saisir la string à rechercher. La string peut être partielle ou complète. La string c'est le no_inventaire. Donc la clé primaire de la table.
Voici le code pour afficher les données dans le grid. C'est dans une procédure qui est demandée à chaque fois que je fais un ajout, modifier ou supprimer et au load du form.
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
18
19 Dim total As Integer = DG_Inventaire.Rows.Count Dim chaine As String Dim compteur As Integer = 1 Dim varbool As Boolean = False While compteur <> total chaine = DG_Inventaire.Rows.Item(compteur).Cells(0).Value.ToString varbool = chaine.Contains(Me.TST_Rechercher.Text) If varbool = True Then Me.DG_Inventaire.Rows.Item(compteur).Selected = True Me.DG_Inventaire.Refresh() Exit Sub End If compteur = compteur + 1 End While
Lorsque la string est trouvée dans le datagrid je fais un "focus" ou selected sur la ligne dans le grid.
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 Public Sub afficher() Dim strCon$ = CStr("provider=microsoft.jet.oledb.4.0;" & "data source= " & Application.StartupPath & "\inventairef.mdb" & ";") Dim CnRapp As New OleDb.OleDbConnection Dim CmdR As OleDb.OleDbCommand Dim DtAdapteurInvent As New OleDb.OleDbDataAdapter Dim DtsetInventaire As New DataSet() CnRapp.ConnectionString = strCon CnRapp.Open() CmdR = CnRapp.CreateCommand() 'Creation de commande CmdR.CommandText = "select * from inventaire order by NO_inventaire asc" Try DtsetInventaire = New DataSet DtAdapteurInvent = New OleDb.OleDbDataAdapter DtAdapteurInvent.SelectCommand = CmdR DtAdapteurInvent.Fill(DtsetInventaire, "Inventaire") Me.DG_Inventaire.AllowUserToAddRows = False Me.DG_Inventaire.AllowUserToDeleteRows = False Me.DG_Inventaire.AllowUserToOrderColumns = False Me.DG_Inventaire.DataSource = DtsetInventaire.Tables("Inventaire") Me.DG_Inventaire.Refresh() Me.DG_Inventaire.AutoResizeColumn(0) Me.DG_Inventaire.AutoResizeRow(0) Me.DG_Inventaire.Columns.Item(0).HeaderText = "No Inventaire" Me.DG_Inventaire.Refresh() Me.DG_Inventaire.AutoResizeColumn(1) Me.DG_Inventaire.AutoResizeRow(1) Me.DG_Inventaire.Columns.Item(1).HeaderText = "Description" Me.DG_Inventaire.Refresh() Me.DG_Inventaire.AutoResizeColumn(2) Me.DG_Inventaire.AutoResizeRow(2) Me.DG_Inventaire.Columns.Item(2).HeaderText = "Remplir" Me.DG_Inventaire.Refresh() Me.DG_Inventaire.AutoResizeColumn(3) Me.DG_Inventaire.AutoResizeRow(3) Me.DG_Inventaire.Columns.Item(3).HeaderText = "Qtée" Me.DG_Inventaire.Refresh() Me.DG_Inventaire.AutoResizeColumn(4) Me.DG_Inventaire.AutoResizeRow(4) Me.DG_Inventaire.Columns.Item(4).HeaderText = "Compartiment" Me.DG_Inventaire.Refresh() Me.DG_Inventaire.AutoResizeColumn(5) Me.DG_Inventaire.AutoResizeRow(5) Me.DG_Inventaire.Columns.Item(5).HeaderText = "Autre" Me.DG_Inventaire.Refresh() CmdR = Nothing CnRapp = Nothing DtsetInventaire = Nothing DtAdapteurInvent = Nothing Catch ex As OleDb.OleDbException MessageBox.Show("message : " & ex.Message) CmdR = Nothing CnRapp = Nothing DtsetInventaire = Nothing DtAdapteurInvent = Nothing End Try End Sub
La ligne est sélectionnée mais la flèche ne suit pas le choix de la ligne. Donc l'affichage dans le grid non plus.
Je ne comprends pas le problème....
Avez-vous une idée du problème ?
AngelEvil!
Partager