Se positionner sur une ligne dans un datagridview

Signaler
-
Messages postés
14922
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 octobre 2020
-
Bonjour
j'ai un datagridview remplit par un dataset. mon souhait est de positionner le curseur en fonction de la première lettre des enregistrements.
c'est a dire lorsque le datagridview a le focus et que je presse la lettre 'M', la sélection se place sur le premier enregistrement commençant par la lettre 'M'
merci d'avance

3 réponses

Messages postés
14922
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 octobre 2020
447
Alors tu peux essayer un truc comme ça
    Private Sub DataGridView1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles DataGridView1.KeyPress
        Dim c As Char = e.KeyChar
        Dim index As Integer = 0

        For Each r As DataRow In SGrT.Rows
            If r.Field(Of String)("Article").StartsWith(c) Then
                DataGridView1.Rows(index).Selected = True
                Exit Sub
            End If
            index += 1
        Next
    End Sub 


Tu peux aussi t'intéresser au binding via l'objet bindingsource https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource
Il te faudra écrire une classe métier que tu remplirais avec le datatable, mais ensuite, il suffit d'affecter à la propriété Current du bindingsource le résultat de cette requête Linq
        lesDonnees.FirstOrDefault(Function(x)
                                      Return x.Article.StartWith(c)
                                  End Function)

lesDonnees étant la collection de tes objets métier
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Messages postés
14922
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 octobre 2020
447
PS je me suis permet de modifier ton titre, pour qu'il n'y ait plus d'ambiguïté sur le contrôle
Messages postés
14922
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 octobre 2020
447
Bonjour

Tout d’abord gridview et datagridview sont 2 contrôles assez différents.

On va partir du principe que c’est un datagridview, si ça n’est pas le cas, il faudra que tu le précises.
Peux tu poster le code qui le remplit en utilisant la coloration syntaxique (voir ce tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code )
Il faut aussi préciser ce que tu entends par
premier enregistrement commençant par la lettre 'M'
par ce que l’intérêt d’un datagridview est d’afficher des enregistrements avec plusieurs champs. Faut il trouver l’item dont n’importe quel champ commence par M? Ou seulement un champ spécifique?
Bonjour,
Vous aviez raison j'ai un datagridview, c'était pour faire la différence avec un datagrid que je l'ai nommé gridview. Merci
Voila comment il est rempli, j'ai environ 97 articles.

 Public Sub ChargerStockGr()
        Try
            Connection()
            Dim Mag As Integer = 1
            Sql = "SELECT ID, Code, Article, Stock, [USell] AS [Prix(U)], Qté, Montant " _
                   + " FROM StockGros WHERE [Stock] >= '" & Mag & "' ORDER BY [Article] ASC"
            Cmd = New OleDb.OleDbCommand(Sql) 
            SGrTA = New OleDb.OleDbDataAdapter(Cmd)
            Cmd.Connection() = GP 
            CDSet = New DataSet 
            SGrTA.Fill(CDSet, "StockGros")
            SGrT = CDSet.Tables("StockGros") 
            Gridview.DataSource = CDSet
            Gridview.DataMember = "StockGros" 
           GridviewStockStyles()
        Catch ex As Exception
        Finally
            GP.Close()
        End Try
    End Sub


Le positionnement se fera sur l'article dont le nom commence par 'M' par exemple dans le champ "Article". Ceci permettra d'aller directement sur les articles commençant par la lettre 'M' avant de sélectionner l'article rechercher