2016-06-22 4 views
0

데이터베이스에서 데이터를 검색 한 후에 dataGridView 셀의 색을 지정하려고합니다. 셀 텍스트에 "X"가 있으면 셀을 GreenYellow 색으로 채 웁니다. 코드를 작성하려고했지만 작동하지 않았습니다.C#의 텍스트 조건에서 dataGridView 셀 색상을 변경하는 방법

private void button2_Click(object sender, EventArgs e) 
    { 
     string constring = "Data Source = localhost; port = 3306; username = root; password = 0159"; 
     MySqlConnection conDataBase = new MySqlConnection(constring); 
     MySqlCommand cmdDataBase = new MySqlCommand("Select * from TopShineDB.Table1 ;", conDataBase); 
     using (MySqlConnection conn = new MySqlConnection(constring)) 
     { 
      try { 
      MySqlDataAdapter sda = new MySqlDataAdapter(); 
      sda.SelectCommand = cmdDataBase; 
      DataTable dt = new DataTable(); 
      sda.Fill(dt); 

       foreach (DataRow item in dt.Rows) 
       { 
        int n = dataGridView1.Rows.Add(); 
        dataGridView1.Rows[n].Cells[0].Value = item["Timee"].ToString(); 
        dataGridView1.Rows[n].Cells[1].Value = item["CarColorNumber"].ToString(); 
        dataGridView1.Rows[n].Cells[2].Value = item["Interior"].ToString(); 
        dataGridView1.Rows[n].Cells[3].Value = item["Exterior"].ToString(); 

        if (dataGridView1.CurrentCell.Value == item["Interior"] + " X".ToString()) 
        { 
         dataGridView1.CurrentCell.Style.BackColor = Color.GreenYellow; 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 

모든 아이디어가 어떻게 작동 할 수 있습니다 :

이것은 내가 지금까지 가지고있는 코드는?

감사합니다.

+0

코드를 편집했습니다. 버튼 클릭시 데이터베이스에서 데이터를 검색해야합니다. –

+0

a) 'inter'이란 무엇입니까 ?? b)''X ''는 이미 문자열입니다! c) 현재 셀이 있다고 가정하지 마십시오! 대신 처리중인 행의 오른쪽 셀을 변경하십시오 !! – TaW

+0

@TaW 죄송합니다. 답변을 위해 –

답변

1

변경하려는 셀의 스타일을 설정해야합니다.

데이터를로드 할 위치와 스크롤 이벤트에 아래 메소드를 포함하면 셀이 표시 될 때만 원하는대로 셀이 채색됩니다. 당신이 많은 행

public void SetRowColor() 
{ 
    try 
    { 
     for (int i = 0; i < this.dataGridView.Rows.Count; i++) 
     { 
      if (this.dataGridView.Rows[i].Displayed) 
      { 
       if (this.dataGridView.Columns.Contains("Interior")) 
       { 
        if ((int)this.dataGridView.Rows[i].Cells["Interior"].Value == "X") 
        { 
         this.dataGridView.Rows[i].Cells["Interior"].Style.BackColor = Color.Green; 
         this.dataGridView.Rows[i].Cells["Interior"].Style.ForeColor = Color.White; 
         this.dataGridView.InvalidateRow(i); 
        } 
        else 
        { 
         this.dataGridView.Rows[i].Cells["Interior"].Style.BackColor = Color.White; 
         this.dataGridView.Rows[i].Cells["Interior"].Style.ForeColor = Color.Black; 
         this.dataGridView.InvalidateRow(i); 
        } 
       } 
      } 
     } 
    } 
} 

이 가까이 당신이 필요로하는 무엇을 얻을 희망이있는 경우 이것은 중요한 성능 문제입니다.

토마스

+0

코드를 고쳤습니다. 셀의 값이 "X"가 아닙니다. 그 이름은 테이블을 저장하기 전에 사용자가 쓸 특정 이름입니다. 이제는 셀에 "X"(예 : David X)가있는 경우 가져 오기 작업을 수행 한 다음 배경색을 GreenYellow로 이동합니다. –

+0

@ Tarek : 다음으로 체크를 변경하십시오 : .... Value.ToString(). ("X")가 포함되어 있습니다. –

+0

도움이되었습니다. –

관련 문제