Comment définir l'index d'une DataGridViewComboBoxCell - Vs 2010

Signaler
-
 Gaby53 -
Bonjour,
vous l'aurez compris dans le sujet, je débute; (aussi bien en Vs 2010 qu'en SQL, vb net ..)
Ma question est, je crois, récurrente mais je bloque sur l'usage du SelectedIndex d'une .
J'arrive bien à récupérer l'index sélectionné mais je ne comprend pas du tout comment "forcer" cet index à la valeur que je veux.
Je voudrais, par exemple, à l'initialisation du contrôle, mettre cet index à 1 comme on peut le faire avec un combobox classique.
genre : ComboBox1.SelectedIndex=1

J'ai beau chercher dans l'aide, je ne trouve pas. (ou je ne comprend pas ??)

merci de votre aide.

Le projet est composé d'un simple formulaire avec des DataGridView pour l'apprentissage.
(j'y vais petit à petit )

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call Init_Datagrid3()
    End Sub
Private Sub Init_Datagrid3()
        ' form1.dataGridView3 créee avec valeurs par défaut mais non initialisé
        DataGridView3.ColumnCount = 2
        DataGridView3.ColumnHeadersVisible = True
        DataGridView3.AllowUserToAddRows = False
        ' Nommage colonnes
        DataGridView3.Columns(0).Name = "IdFabricant"
        DataGridView3.Columns(1).Name = "Fabricant"
        '
        Dim comboBoxCell As New DataGridViewComboBoxCell
        ' #####################  remplir ComboBox #############
        Dim strRequete As String = "SELECT TFabricant.IdFabricant,TFabricant.Fabricant" _
                                   & " FROM TFabricant "
        Dim StrConn As String = "Data source=.\SQLEXPRESS;AttachDbFilename=" _
                                & "D:\DOCUMENTS DE GABY\VISUAL STUDIO 2010\PROJECTS\DATAGRID1\DATAGRID1_SQL.MDF" _
                                & ";Integrated Security=True;Connect Timeout=30;User Instance=True"
        Try
            Dim Connection As New SqlClient.SqlConnection(StrConn)
            Dim SqlCommand As New SqlClient.SqlCommand(strRequete, Connection)
            Connection.Open()
            Dim SqlReader As SqlClient.SqlDataReader = SqlCommand.ExecuteReader()
            Do While SqlReader.Read() ' attention : il existe deja une ligne dans le datagrid
                comboBoxCell.Items.Add(Trim(SqlReader.GetValue(1))) ' on prend que le nom, pas l'id
            Loop
            Connection.Close()
            SqlReader.Close()
        Catch ex As Exception
            MsgBox(("Erreur DataGridView3 : " & vbCrLf & ex.Message))
        End Try
        ' ############# Rajouter ligne et ComboBox dans DataGridView3
        DataGridView3.Rows.Add()
        DataGridView3(0, 0) = comboBoxCell
        ' #########################################
    End Sub
Private Sub ComboBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim comboBox1 As ComboBox = CType(sender, ComboBox)
        MsgBox("index : " & comboBox1.SelectedIndex)
    End Sub
    Private Sub DataGridView3_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView3.EditingControlShowing
        Dim combo As ComboBox = CType(e.Control, ComboBox)
        If (combo IsNot Nothing) Then
            ' nettoyage
            RemoveHandler combo.SelectedIndexChanged, New EventHandler(AddressOf ComboBox_SelectedIndexChanged)
            ' Add  event handler. 
            AddHandler combo.SelectedIndexChanged, New EventHandler(AddressOf ComboBox_SelectedIndexChanged)
        End If
    End Sub



Gaby

4 réponses


Bonjour,

J'ai beau chercher dans l'aide, je ne trouve pas.


Moi non plus (ou presque). Sans savoir si c'est la réponse, (à vrai dire, je n'ai jamais "joué" avec ce type de combo dans un DGV), j'ai trouvé ceci de peine et de misère dans mon aide de VB 2012, et aussi en ligne.
Merci,
je l'avais trouvé aussi mais je n'arrive pas a l'adapter (si c'est possible)
au cas qui me préoccupe.
Le but c'est de définir l'index dans cette foutue ComboBox;
pas de le récupérer après modif utilisateur. (ça, on sait faire)


Gaby

Bonjour,

Je croise les doigts, je n'ai pas essayé, mais d'un coup que cela conviendrait. Il y a un DGV modifiédans les exemples de Microsoft.
Merci,
je l'avais trouvé aussi;
J'ai même essayé un "DataGridView4" sur cette classe;
ça fonctionne mais cela ne résout pas mon problème.

Je ne sais pas me servir de cette classe (ces) pour changer l'item de la combobox dans le DataGridView(0,0)
( pas assez de connaissances en programmation objet ?)

Il y a plein de déclarations de ce type sur le net mais ce que je voudrais trouver surtout,
ce sont des exemples concrets ET simples de l'utilisation de ces classes.

Gaby