2017-09-29 9 views
0

안녕하세요 데이터 격자보기 행을 다시 색으로 변경하려고합니다. 한 그리드에 대해이 작업을 수행했지만 어떤 이유로 다른 데이터 그리드보기가 작동하지 않습니다.DataGridView 색 행

DataGridviews는 탭 컨트롤을 사용하여 2 개의 다른 탭에 배치됩니다. dgvTickets에 완벽하게 작동하지만 dgvFXTickets에서는 작동하지 않습니다. 디버깅하는 동안 셀 인덱스가 올바른지 확인합니다. 어떤 도움이라도 좋을 것입니다.

 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

시도를 [12] _ 코드가 두 번째 루프 – Steve

+0

를 입력 @ 스티브가했는데 코드가 완성되고 취소 된 부분으로 들어가지만 여전히 색상이 변하지 않습니다. –

답변

0

탭 페이지는 색상 코드를 지정하기 전에 선택해야합니다.

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; 
     } 
    } 

희망이 컨트롤이 표시 될 때까지 데이터 바인딩 컨트롤이 업데이트되지 않기 때문에

1

이 일어난 데 도움이됩니다.

나는이 문제를 방지하기 위해 폼로드에이 코드를 사용 : 디버거를 사용하고 _rFX.Cells의 값이 무엇인지 확인하기 위해

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