2016-06-22 4 views
0

Я хочу покрасить ячейку dataGridView после того, как она извлекает данные из базы данных. если в тексте ячейки есть «X», затем цвет ячейки с цветом GreenYellow. Я попытался написать код, но он не сработал.Как изменить цвет ячейки данныхGridView на текстовое условие в C#

Это код, который я до сих пор:

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

Надежда это получает вас ближе к тому, что вам нужно.

Thomas

+0

спасибо за ответ, его просто, что значение ячейки не просто «X». его определенное имя, которое пользователь напишет перед сохранением таблицы. теперь я хочу получить, если ячейка имеет «X», например: (David X), а затем вырезает backcolor в GreenYellow. –

+0

@Tarek: тогда просто измените чек на: .... Value.ToString(). Содержит («X») –

+0

Это сработало :) Большое вам спасибо за помощь. –

 Смежные вопросы

  • Нет связанных вопросов^_^