Pourquoi mon datagridview ne se remet pas à jour lors de la réouverture du form

Résolu
grosnull Messages postés 2 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 13 mars 2011 - 13 mars 2011 à 14:18
grosnull Messages postés 2 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 13 mars 2011 - 13 mars 2011 à 18:44
Bonjour
Lors de la premiere ouverture de mon formulaire le datagrigview se remplit et le code de coloriage de mes lignes s'execute.(.Rows(i).DefaultCellStyle.BackColor = Color.Red ) Je ferme le formulaire, je le réouvre le DGV se remplit mais mon code de coloriage n'est pas affiché à l'écran. Je clique sur l'entête de la cellule je lance Form_FactureEnCours_Load(Me, New EventArgs) et là les lignes sont affichées en rouge.
J'ai essayé le refresh du form + Dgv mais rien ne fonctionne.

PS (ESSAI) j'ouvre mon form en .showdialog()cela ne marche pas
J'ouvre mon form en .show() et miracle les lignes sont en rouge
mais je veux que mon form soit en Dialog

Merci de vos explications
Code du form:
Public Class Frm_FactureEnCours

Public Sub Form_FactureEnCours_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Me.SeleQueryFactureEnCoursTableAdapter.Fill(Me.DataSet1.SeleQueryFactureEnCours)
Dim i As Integer
Dim i_aRelancer As Integer = 0

With DGV_FactureEnCours

For i = 0 To .RowCount - 1
'mettre le bon nom du payeur dans la cellule
If .Item(3, i).Value.ToString Like .Item(12, i).Value.ToString Then
.Item(2, i).Value = .Item(3, i).Value.ToString.Trim 'nom du client
Else
.Item(2, i).Value = .Item(12, i).Value.ToString.Trim 'nom attachement
End If

If CDate(Microsoft.VisualBasic.Left(.Item(10,i).Value.ToString, 10)) < CDate(Now.ToShortDateString) Then
'calcul le nbre de relance
i_aRelancer += 1
'ligne a relancer en rouge
'Cette ligne n'est pas affichée
.Rows(i).DefaultCellStyle.BackColor = Color.Red
.Rows(i).DefaultCellStyle.SelectionBackColor = Color.Red
End If
Next
End With
'Ceci est bien affiché:
Me.Text = BindingNavigatorCountItem.Text & " Factures impayées dont " & i_aRelancer & " facture(s) à relancer"
'selectionne la cellule colonne 4 derniere ligne
'Dim nb As Integer = CInt(BindingNavigatorCountItem.Text) - 1
'Me.DGV_FactureEnCours.CurrentCell = DGV_FactureEnCours.Item(0, nb)

Catch ex As Exception
MsgBox(ex.Message & " " & ex.Source)
End Try

End Sub

Private Sub DGV_FactureEnCours_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV_FactureEnCours.CellMouseDoubleClick
Try
'si l'utilisateur double clic sur l'entete de colonne
If e.RowIndex = -1 Then Exit Sub
'permet de faire la mise a jour dans la table si un changement est effectué
Dim s_IDfac As String = DGV_FactureEnCours.Item(0, e.RowIndex).Value.ToString
Dim s_Champ As String = DGV_FactureEnCours.Item(e.ColumnIndex, e.RowIndex).OwningColumn.DataPropertyName.ToString
Dim s_ContenuCellule As String = CStr(DGV_FactureEnCours.Item(e.ColumnIndex, e.RowIndex).FormattedValue)
Dim d_datRegl As String = CStr(DGV_FactureEnCours.Item(10, e.RowIndex).FormattedValue)

If s_IDfac = "" Then Exit Sub

If Not s_ContenuCellule = "" Then 'si le contenu de la cellule n'est pas vide
Select Case s_Champ
Case "IDfac" 'sort on ne peut pas modifier cle primaire
Exit Sub
Case "Payeur", "IDclient" 'ouvre la fiche client
If MsgBox("Vous voulez voir la fiche client ?", MsgBoxStyle.YesNo, "INFORMATION") = MsgBoxResult.Yes Then
IDCLIENT = CInt(DGV_FactureEnCours.Item(1, e.RowIndex).FormattedValue)
Frm_FichesClients.ShowDialog()
End If
Exit Sub

Case "Rel"
'permet de changer de relance
Select Case s_ContenuCellule
Case "0"
s_ContenuCellule = "1"
'ajoute un mois à la date de reglement
d_datRegl = CStr(DateAdd(DateInterval.Month, 1, CDate(d_datRegl)))
Case "1"
s_ContenuCellule = "2"
d_datRegl = CStr(DateAdd(DateInterval.Month, 1, CDate(d_datRegl)))
Case "2"
s_ContenuCellule = "3"
d_datRegl = CStr(DateAdd(DateInterval.Month, 1, CDate(d_datRegl)))
Case "3"
s_ContenuCellule = "3"
End Select

If MsgBox("Vous voulez créer la relance pour ce client ?", MsgBoxStyle.YesNo, "INFORMATION") = MsgBoxResult.Yes Then
'fait la MAJ de la table correspondante
Mycommand.CommandText "UPDATE Tble_Detail_Fac SET REL" & s_ContenuCellule & _
",DatRegl='" & d_datRegl & _
"' WHERE IDfac =" & s_IDfac & ""
MyConnexion.Open()
Mycommand.ExecuteNonQuery()
MyConnexion.Close()
Form_FactureEnCours_Load(Me, New EventArgs)
If MsgBox("Vous voulez imprimer cette relance ?", MsgBoxStyle.YesNo, "INFORMATION") = MsgBoxResult.Yes Then
'TODO faire impression + mis a jour table impression

End If
End If
Exit Sub

Case Else 'autre cas met valeur nulle
s_ContenuCellule = "0"
Exit Sub
End Select

End If

Catch ex As Exception
MyConnexion.Close()
MsgBox(ex.Message & " " & ex.Source)
MsgBox("Une erreur système vient d'être générée. " & vbCrLf _
& "Assurez-vous que tous les champs ont bien été remplis." & vbCrLf _
& "Processus de sauvegarde annulé.", MsgBoxStyle.OkOnly, "ERREUR")
Finally
If Not (MyConnexion Is Nothing) Then MyConnexion.Close()
End Try

End Sub

Private Sub DGV_FactureEnCours_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV_FactureEnCours.ColumnHeaderMouseClick
Form_FactureEnCours_Load(Me, New EventArgs)
End Sub

Private Sub Btn_Retour_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Retour.Click

Me.Close()

End Sub

End Class

1 réponse

grosnull Messages postés 2 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 13 mars 2011
13 mars 2011 à 18:44
Il suffit de mettre le code dans l'évenement: Datagrigview.Paint
3
Rejoignez-nous