2017-09-29 2 views
0

Hallo Ich versuche, die Datenrasteransicht Zeilenfarbe zurück zu ändern. Ich habe es geschafft, dies für ein Raster zu tun, aber aus irgendeinem Grund funktioniert eine andere Datenansicht nicht.DataGridView Farbreihen

Die DatagridViews werden mit Tab Control auf zwei verschiedenen Tabs platziert. Es funktioniert perfekt für dgvTickets, funktioniert aber nicht für dgvFXTickets. Der Zellenindex ist korrekt, da ich ihn beim Debugging überprüft habe. Jede Hilfe wäre großartig.

 dgvFXTickets.AutoGenerateColumns = true; 
     dgvFXTickets.DataSource = new DataAccess.FinanceData().getFXTicketsByDate(dateTimePicker1.Value).ToList(); 

     dgvTickets.AutoGenerateColumns = true; 
     dgvTickets.DataSource = new DataAccess.FinanceData().getTicketsByDate(dateTimePicker1.Value).ToList(); 


     foreach (DataGridViewRow r in dgvTickets.Rows) 
     { 
      if (r.Cells[8].Value.ToString() == "Completed") 
      { 
       r.DefaultCellStyle.BackColor = Color.LightGreen; 
      } 

      else if (r.Cells[8].Value.ToString() == "Cancelled") 
      { 
       r.DefaultCellStyle.BackColor = Color.LightPink; 
      } 
     } 

     foreach (DataGridViewRow rFX in dgvFXTickets.Rows) 
     { 
      if (rFX.Cells[12].Value.ToString() == "Completed") 
      { 
       rFX.DefaultCellStyle.BackColor = Color.LightGreen; 
      } 

      else if (rFX.Cells[12].Value.ToString() == "Cancelled") 
      { 
       rFX.DefaultCellStyle.BackColor = Color.LightPink; 
      } 
     } 
+1

Versuchen Sie, den Debugger zu verwenden und überprüfen, was der Wert von _rFX.Cells ist [12] _ wenn Ihr Code die zweite Schleife – Steve

+0

tritt @ Steve tat es und der Code geht in den fertigen und abgebrochenen Teil, ändert aber immer noch nicht die Farbe. –

Antwort

0

Die Registerkarte sollten vor dem Zuweisen von Farbcodes auf mich ausgewählt werden.

tabControl1.SelectedTab = 0; //select first tab page  
foreach (DataGridViewRow r in dgvTickets.Rows) 
{ 
     if (r.Cells[8].Value.ToString() == "Completed") 
     { 
      r.DefaultCellStyle.BackColor = Color.LightGreen; 
     } 

     else if (r.Cells[8].Value.ToString() == "Cancelled") 
     { 
      r.DefaultCellStyle.BackColor = Color.LightPink; 
     } 
    } 

tabControl1.SelectedTab = 1 //select second tab 
foreach (DataGridViewRow rFX in dgvFXTickets.Rows) 
    { 
     if (rFX.Cells[12].Value.ToString() == "Completed") 
     { 
      rFX.DefaultCellStyle.BackColor = Color.LightGreen; 
     } 

     else if (rFX.Cells[12].Value.ToString() == "Cancelled") 
     { 
      rFX.DefaultCellStyle.BackColor = Color.LightPink; 
     } 
    } 

this helps

1

Dies geschah, weil ein Databound-Steuerelement nicht aktualisiert wird, bis die Kontrolle sichtbar gemacht wird.

Ich benutze diesen Code auf Formular Last dieses Problem zu vermeiden:

Private Sub frmForm1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    For Each tabPage As TabPage In Me.tabTabControl1.TabPages 
     tabPage.Show() 
    Next tabPage 

End Sub