locked
Enregistrer valeur sélectionnée de combobox vers la dernière ligne de DataGridView. RRS feed

  • Question

  • Salut à tous. Mon problème est peut être simple, mais je parviens pas à le résoudre:
    J'ai une combobox indépendante "cboVilleCible" et une DataGridView "TblMouvementsDataGridView" liée à une table Access "TblMouvements".
    Ce que j'essaie de faire, c'est d'enregistrer chaque fois la valeur sélectionnée de ma combobox dans la dernière ligne vide de ma DataGridView. Voici mon code :

    Code Snippet
    PrivateSub cboVilleCible_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboVilleCible.SelectedIndexChanged
      TblMouvementsDataGridView.Item(4, TblMouvementsDataGridView.RowCount - 1).Value =  cboVilleCible.Text
    EndSub

    Et j'enregistre comme suit:

    Code Snippet
    PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Me.Validate()
      Me.TblMouvementsBindingSource.EndEdit()
      Me.TblMouvementsTableAdapter.Update(Me.GRHDataSet1.TblMouvements)
      GRHDataSet1.AcceptChanges()
    EndSub

    La valeur sélectionnée apparaît bien dans la dernière ligne de ma DataGridView, mais ne s'enregistre pas lorsque je ferme l'application. Ce qui est bizarre, c'est quand je clique sur cette dernière ligne, la valeur disparaît même avant de fermer le formulaire!
    Mais lorsque je précise une ligne particulière, ça marche! Par exemple :

    Code Snippet

    PrivateSub cboVilleCible_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboVilleCible.SelectedIndexChanged
        TblMouvementsDataGridView.Item(4, 2).Value = cboVilleCible.Text
    EndSub

    Est ce que j'indique mal la dernière ligne de la DataGridView ?

    Est ce qu'il est vraiment possible d'enregistrer une valeur d'une combobox dans une DataGridView ?
    J'attend votre aide.

    mercredi 11 juin 2008 17:50

Réponses

  • Salut à tous. Le problème était d'enregistrer des données sur la dernière ligne qui permet d'ajouter de nouveaux enregistrements!
    Ce que j'ai fait :

    Code Snippet
    Private Sub cboVilleCible_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboVilleCible.SelectedIndexChanged
       ' Ajouter une nouvelle ligne pour éviter la non sauvegarde
       ' relative à la dernière ligne :
       TblMouvementsTableAdapter.Insert(TblPersonnelDataGridView.Item(0, 0).Value, "", "", "")
       TblMouvementsDataGridView.Item(4, TblMouvementsDataGridView.RowCount - 1).Value = cboVilleCible.Text
       MessageBox.Show(
    "Mutation effectuée avec succès.", "Mutation", MessageBoxButtons.OKCancel, MessageBoxIcon.Information)
       Me.Validate()
       Me.TblMouvementsBindingSource.EndEdit()
       Me.TblMouvementsTableAdapter.Update(Me.GRHDataSet1.TblMouvements)
    End Sub

    Et :

    Code Snippet

    Private Sub frmMouvements_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
       Me.TblMouvementsTableAdapter.Fill(Me.GRHDataSet1.TblMouvements)
       ' Pour ne pas avoir 2 lignes vides lorsque j'insère une nouvelle ligne
       ' lors du clic sur "cboVilleCible" :
       TblMouvementsDataGridView.AllowUserToAddRows = False
    End Sub

     

    Et ça marche .

    vendredi 13 juin 2008 18:20