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 :

Problème DataGrid et sélection de record par search dans DataGrid


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut Problème DataGrid et sélection de record par search dans DataGrid
    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.

    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
    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
    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
    Lorsque la string est trouvée dans le datagrid je fais un "focus" ou selected sur la ligne dans le grid.

    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!

  2. #2
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    Bonjour,

    Ce que je veux dire par la flèche c'est celle qui est toujours affiché sur le coté gauche du Grid qui indique l'enregistrement ou row qui est sélectionné.

    Je veux qu'elle se positionne sur l'enregistrement trouvé et que l'affichage du DataGrid dans mon programme se positionne afin qu'on voit l'enregistrement trouvé.

    Présentement j'ai plus de 1000 enregistrements.

    Si la recherche me donne l'enregistrement 759, il faut que l'affichage du DataGrid se positionne dans la zone visible des datas.

    Ou si vous aimez mieux imaginez que vous faites une recherche dans une grille Excel et que la donnée trouvée se trouve dans la ligne 400. Automatiquement l'affichage de la grille Excel va se positionner afin que l'usager puisse voir l'enregistrement dans la zone visible de la grille.

    Si c'est impossible avec le DataGridView pouvez-vous me dire avec quel autre controle je pourrai produire une interface comparable ? J'ai VS 2008.

    Merci de m'aider

    AngelEvil!

Discussions similaires

  1. [XL-2003] Problème sur une sélection puis séparation par une ligne blanche
    Par korni184 dans le forum Excel
    Réponses: 12
    Dernier message: 08/04/2010, 11h45
  2. Ajout par défaut dans Datagrid
    Par toto2022 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/10/2007, 09h57
  3. [MySQL] Problème requête de sélection d'id par lieu
    Par mLk92 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/08/2006, 15h15
  4. Sélection valeur par défaut dans une zone de liste
    Par Cécile154 dans le forum IHM
    Réponses: 2
    Dernier message: 15/02/2005, 18h20
  5. Réponses: 7
    Dernier message: 19/10/2004, 22h40

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