2013-01-03 14 views
5

Chciałbym zapytać, w jaki sposób wiersz automatycznie aktualizuje bazę kolorów swojej czcionki na wartość kolumny w dataGridView.(datagridview) aktualizuje bazę kolorów wiersza w wierszu o wartości kolumny

Na przykład tabela ma 4 kolumny: id, name, rentPayMent and check.

Sprawdź każdym wierszu, aby zobaczyć, czy któryś z wartością check == 0 Jeśli tak, to czcionki ten wiersz za color = red Else do nothing

w ruchu, i użyć kodu w następujący sposób, ale to wydobyć błąd z

obiekt odniesienia nie jest ustawiony na przykład przedmiotu, była System.NullReferenceException nieobsłużonego

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    foreach (DataGridViewRow row in dataGridView1.Rows) 
    { 
     if (row.Cells[3].Value.ToString() == "0") //**Object reference not set to an instance of an object** 
     { 
      row.DefaultCellStyle.BackColor = Color.Red; //then change row color to red 
     } 
    } 
} 

Dzięki za wszystko, mam już rozwiązanie.

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 
     if (dataGridView1.Rows[e.RowIndex].Cells[3].Value != null && !string.IsNullOrWhiteSpace(dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString())) 
     { 
      if (dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString().Trim() == "0") 
       dataGridView1.Rows[e.RowIndex].DefaultCellStyle = new DataGridViewCellStyle { ForeColor = Color.Red }; 
     } 
     else 
     { 
      dataGridView1.Rows[e.RowIndex].Cells[3].Style = dataGridView1.DefaultCellStyle; 
     } 

    } 
+1

myślę, że należy Refar ten link Moje Bądź Pomoc Jesteś [staskoverflow] [1] [1]: http://stackoverflow.com/questions/12202751/how-can-i-make-a-datagridview-cells-font-a-particular-color –

+1

winforms lub asp.net? –

+0

jest w WinForm. – Kam2012

Odpowiedz

1
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 
    if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null && !string.IsNullOrWhiteSpace(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString())) 
    { 
     dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style = new DataGridViewCellStyle { ForeColor = Color.Orange, BackColor = Color.Blue }; 
    } 
    else 
    { 
     dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style = dataGridView1.DefaultCellStyle; 
    } 
} 
0

Zrobiłem to na winform.

spróbować mojego kodu poniżej:

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
     { 

      foreach (DataGridViewRow row in dataGridView1.Rows) 
      { 

       if (row.Cells["YourDatagridColumnName"].Value.ToString() == "0") //if check ==0 
       { 
        row.DefaultCellStyle.BackColor = Color.Red; //then change row color to red 
       } 

      } 

     } 

Pozdrawiam

+0

Mam komunikat o błędzie, a nie o nazwie "Check" nie można znaleźć. Nazwa parametru: columnName, nawet ja próbuję zmienić nazwę kolumny na id lub nazwę, to wciąż daje mi to samo ostrzeżenie. – Kam2012

+0

Zobacz mój zaktualizowany post. Musisz ustawić istniejącą kolumnę datagrid. Upewnij się, że twoja kolumna DataPropertyName i HeaderText jest równa. – BizApps

+0

nadal ma ten sam problem, nie mógł znaleźć tego czeku, nawet ja używam czeku zamiast "YourDatagridColumnName", i mam ustawioną istniejącą kolumnę datagrid.and Column DataPropertyName i HeaderText jest równy – Kam2012

-1

Ja osobiście będzie obsługiwać tę logikę przy użyciu JavaScript. Ale jeśli jest to absolutnie konieczne, aby mieć go w CodeBehind, sprawdziłbym, czy komórka ma wartość "0". Jeśli tak, to dodaję CssClass "czerwony" (lub dowolną wybraną przez ciebie nazwę), a następnie zapisz CSS, aby uzyskać wartość koloru. To przynajmniej ułatwi utrzymanie, zamiast obsługi koloru po stronie serwera.

0

Używam coś podobnego do tego:

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    foreach (DataGridViewRow row in dataGridView1.Rows) 
    { 
     if(!string.IsNullOrEmpty(row.Cells[3].Value.ToString())) // make sure the value is present 
     (
      if (row.Cells[3].Value.ToString() == "0") 
      { 
       row.DefaultCellStyle.BackColor = Color.Red; //then change row color to red 
      } 
     ) 
    } 
} 
0

To preferowany wymienić kolumny w DataGridView. na przykład nazwij kolumnę jako colCheck. Użyj metody CellFormatting zmienić kolor czcionki wiersz następująco

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 

    if (e.RowIndex > -1 && e.ColumnIndex == dataGridView1.Columns["colCheck"].Index) 
     { 
      if (e.Value != null) 
      { 

       if (dataGridView1.Rows[e.RowIndex].Cells["colCheck"].Value.ToString() == "1") 
       { 
        for (int i = 0; i < this.dataGridView1.Columns.Count; i++) 
        { 
         this.dataGridView1.Rows[e.RowIndex].Cells[i].Style.ForeColor = Color.Red; 
        } 

       } 
       else 
       { 
        for (int i = 0; i < this.dataGridView1.Columns.Count; i++) 
        { 
         this.dataGridView1.Rows[e.RowIndex].Cells[i].Style.ForeColor = Color.Black; 
        } 
       } 
      } 
     } 


} 
Powiązane problemy