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

VB.NET Discussion :

Problème avec DataGridViewComboBoxCell [Débutant]


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 40
    Par défaut Problème avec DataGridViewComboBoxCell
    Bonjour tout le monde
    J'essai d’intégrer dans ma DataGridView un ComboBoxCell afin d'aider l'utilisateur à choisir un article parmi lesquelles a saisi une partie du Code d'Article , la routine suivante marche très bien pour la 1ere ligne de ma grille , je n'ai pas pu savoir ou ça coince
    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
    Imports System.Data.OleDb
    Public Class Dgv
        Dim cn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=GestionDepot.mdb")
        Dim tbl As New DataTable
        Dim da As OleDbDataAdapter
        Dim txtCell As New DataGridViewTextBoxCell
        Dim CmbCell As New DataGridViewComboBoxCell
        Private Sub Dgv_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            dg.ColumnCount = 2
            dg.Columns(1).Width = 300
        End Sub
        Private Sub dg_CellEndEdit(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dg.CellEndEdit
     
            If e.ColumnIndex = 0 Then
                da = New OleDbDataAdapter("select * from Article where CodeArticle like '%" & dg(e.RowIndex, e.ColumnIndex).Value.ToString & "%'", cn)
                tbl.Clear()
                da.Fill(tbl)
                If tbl.Rows.Count > 1 Then
                    CmbCell.DataSource = tbl
                    CmbCell.DisplayMember = "LibelleArticle"
                    Dim colonne As Integer = e.ColumnIndex + 1
                    Dim ligne As Integer = e.RowIndex
                    dg.Item(colonne, ligne) = CmbCell
                End If
            ElseIf e.ColumnIndex = 1 Then
                Dim Libelle As String
                Libelle = CmbCell.Value.ToString
                If TypeOf (dg.Item(e.ColumnIndex, e.RowIndex)) Is DataGridViewComboBoxCell Then dg.Item(e.ColumnIndex, e.RowIndex) = txtCell
                txtCell.Value = Libelle
                CmbCell.DataSource = Nothing
            End If
        End Sub
     
    End Class
    si quelqu'un pourra m'aider je serai reconnaissant

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 216
    Par défaut
    Je crois que quand on utilise un DataGridViewComboBoxCell, les items doivent être les mêmes pour chaque ligne de la même colonne de la DataGridView. C'est embêtant! Je crois qu'il faut travailler avec une ListBox ou ComboBox sur le côté de la DataGridView...

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 40
    Par défaut
    vous voulez dire un ComboBox indépendant de la grille ?c'est une bonne idée , je l'ai réalisé avec flexgrid de vb6 , mais le problème avec vb.net c'est que j'ai pas pu positionner le ComboBox sur une cellule bien déterminé , pour l'instant j'utilise une ListBox , mais c'est pas joli , pourtant elle fait l'affaire

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 216
    Par défaut
    Je positionnerais le Combo ou le ListBox vraiment à côté de la grille (cf: fichier joint. Puis, au niveau du code, j'écris ceci:
    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
     
        Private Sub DataGridResult_Click(sender As Object, e As EventArgs) Handles DataGridResult.Click
            Call LoadBiblio()
            Call LoadFichiers()
            Call RefreshRTF()
        End Sub
     
        ''' <summary>
        ''' Charge les bibliographies dans ListBoxBibliographies
        ''' </summary>
     
        Private Sub LoadBiblio()
            ListBoxBibliographies.DataSource = Nothing
            Dim nInventaire As Integer = DataGridResult.CurrentRow.Cells.Item("Inventaire").Value
            Dim oLoadListThread = New ClassLoadListThread("Bibliographies", ListBoxBibliographies, nInventaire)
            oLoadListThread.RunDoWork()
        End Sub
    Images attachées Images attachées  

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 40
    Par défaut
    Merci Paul , mais c'est pas ce que je veux faire , moi j'essai à chaque fois de positionner un comboBox exactement sur la cellule du libellé et je joue sur sa propriété VISIBLE suivant les cas , ma question est comment récupérer la position graphique de la cellule active , pourtant ça éxiste au FlexGrid du vb6.

  6. #6
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Citation Envoyé par torki2 Voir le message
    Merci Paul , mais c'est pas ce que je veux faire , moi j'essai à chaque fois de positionner un comboBox exactement sur la cellule du libellé et je joue sur sa propriété VISIBLE suivant les cas , ma question est comment récupérer la position graphique de la cellule active , pourtant ça éxiste au FlexGrid du vb6.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
            Dim rec As [Rectangle] = DataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, False)
     
            MsgBox(rec.Location.ToString)
     
        End Sub


    DataGridView.GetCellDisplayRectangle Method

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 40
    Par défaut
    je suis reconnaissant _Ez3kiel , vous m'avez compris et aidé , merci infiniment

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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