2016-01-09 106 views
2

在MySql中是8列(col1,col2,...,col8)和100行。 在DataGridView中是3列(1,2,3)。 列(8) 「priorita」 只有這個字符串:datagridview字體顏色+ mysql

string a1 = "black"; 
string a2 = "blue"; 
string a3 = "red"; 

現在我需要從 「priorita」 列裝載所有字符串和更改文本顏色DGV

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 

     using (MySqlConnection cnn = new MySqlConnection("[email protected]@@;Database=OitDB;Uid=martin;Pwd=;")) 
     { 
      MySqlDataAdapter da = new MySqlDataAdapter("SELECT priorita FROM nrp", cnn); 
      DataSet ds = new DataSet(); 
      da.Fill(ds, "nrp"); 
      int pocetDGV = dataGridView1.Rows.Count; 
      for(int i = 0; i < pocetDGV; i++) 
      { 
      List<string> LISTpriorita = new List<string>(); 
      foreach (DataRow row in ds.Tables["nrp"].Rows) 
      { 

       LISTpriorita.Add(row["priorita"].ToString()); 
       string s = LISTpriorita[i]; 
       if (s == a1) 
       { 
        DataGridViewRow row1 = dataGridView1.Rows[e.RowIndex]; 
        row1.DefaultCellStyle.BackColor = Color.White; 
        row1.DefaultCellStyle.ForeColor = Color.Black; 
       } 
       else if (s == a2) 
       { 
        DataGridViewRow row2 = dataGridView1.Rows[e.RowIndex]; 
        row2.DefaultCellStyle.BackColor = Color.White; 
        row2.DefaultCellStyle.ForeColor = Color.Blue; 
       } 
       else if (s == a3) 
       { 
        DataGridViewRow row3 = dataGridView1.Rows[e.RowIndex]; 
        row3.DefaultCellStyle.BackColor = Color.White; 
        row3.DefaultCellStyle.ForeColor = Color.Red; 
       } 
      } 
     } 
     dataGridView1.ColumnHeadersVisible = false; 
     dataGridView1.EnableHeadersVisualStyles = false; 
    } 

COL1,COL2,COL3是在DGV

my mysql example

顯示我如何可以加載「priorita」數據與DGV比較和更改文本顏色DGV行?我的代碼不起作用。你有任何想法或解決方案?謝謝。

+1

你能詳細說一下_「這不行嗎?」_?它顯示沒有顏色或錯誤的顏色?當你放置一個斷點並逐步完成代碼時,哪一部分被執行以及你期望執行哪一部分? –

+0

您可以上傳帶描述的輸出截圖,以便我們瞭解您的要求 –

+0

它不顯示顏色(默認黑色)。 – Martin

回答

0
dataGridView1.Rows[0].Cells[0].Style.SelectionForeColor = Color.Green; 

當你選擇單元格時的前面顏色。

dataGridView1.Rows[0].Cells[0].Style.ForeColor = Color.Green; 

未選定狀態的前置色。這是着色的基本條件。

  int rowc = dataGridView1.Rows.Count - 1; 
     for (int i = 0; i <= rowc; i++) 
     { 
      if (dataGridView1.Rows[i].Cells[7].Value.ToString() == "a1") 
      { 
       for (int z = 0; z <= dataGridView1.ColumnCount - 1; z++) 
       { 
        dataGridView1.Rows[i].Cells[z].Style.ForeColor = Color.Black; 
       } 
      } 
      else if (dataGridView1.Rows[i].Cells[7].Value.ToString() == "a2") 
      { 
       for (int z = 0; z <= dataGridView1.ColumnCount - 1; z++) 
       { 
        dataGridView1.Rows[i].Cells[z].Style.ForeColor = Color.Blue; 
       } 
      } 
      else if (dataGridView1.Rows[i].Cells[7].Value.ToString() == "a3") 
      { 
       for (int z = 0; z <= dataGridView1.ColumnCount - 1; z++) 
       { 
        dataGridView1.Rows[i].Cells[z].Style.ForeColor = Color.Red; 
       } 
      } 
     } 

我用col8的索引7,因爲索引從0開始。我沒有嘗試,但它必須工作。別忘了,在填充DGV後使用它。

+0

在您從DGV中讀取的代碼中,但可以是「a1,a2,a3」的列僅在MySql中不在DGV中。 – Martin

+0

我嘗試選擇從mysql到DGV的所有列,但仍然無法正常工作。它沒有改變顏色 – Martin

+0

使一個看不見的列,並給無形列的索引寫「細胞[7]」 – Ranork