2013-01-03 12 views
5

Vorrei chiedere come una riga aggiorna automaticamente la base colore del suo carattere sul valore di una colonna in dataGridView.(datagridview) aggiorna il colore del carattere di una riga su un valore di colonna

Ad esempio, una tabella ha 4 colonne che sono: id, name, rentPayMent and check.

Verificare la presenza di ogni riga per vedere se qualcuno di valore delle check == 0 Se sì, allora carattere di questa riga color = red Else do nothing

in movimento, io uso il codice come segue, ma mettere in evidenza l'errore con

riferimento non impostato a un'istanza di un oggetto, System.NullReferenceException stata gestita

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

Grazie per tutto, ho già la soluzione.

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

penso che si dovrebbe Refar questo link il mio essere Guida È [staskoverflow] [1] [1]: http://stackoverflow.com/questions/12202751/how-can-i-make-a-datagridview-cells-font-a-particular-color –

+1

winforms o asp.net? –

+0

è in winforms. – Kam2012

risposta

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

ho fatto sulla homepage.

fare del mio codice qui sotto:

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 
       } 

      } 

     } 

migliori saluti

+0

ho ricevuto un messaggio di errore, non è possibile trovare la verifica dei nomi delle colonne. Nome parametro: columnName, anche se provo a cambiare il nome della colonna in id o nome, mi dà comunque lo stesso avviso. – Kam2012

+0

Si prega di consultare il mio post aggiornato. È necessario impostare la colonna datagrid esistente. Assicurati che Column DataPropertyName e HeaderText siano uguali. – BizApps

+0

ha ancora lo stesso problema, non è stato trovato il controllo, anche io uso il controllo invece di "YourDatagridColumnName" e ho impostato la colonna datagrid esistente. Inoltre, Column DataPropertyName e HeaderText sono uguali – Kam2012

-1

io personalmente avrebbe gestito questa logica utilizzando JavaScript. Ma se è assolutamente necessario averlo nel CodeBehind, vorrei verificare se la cella ha un valore di "0". Se lo fa, vorrei aggiungere un CssClass di "rosso" (o qualsiasi altro nome tu scelga) e poi scrivere il CSS per avere il valore del colore. Ciò renderà almeno più semplice la manutenzione anziché avere il colore gestito da Server Side.

0

io uso qualcosa di simile a questo:

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

E 'preffered per citarne le colonne DataGridView. per esempio chiama il controllo della colonna come colCheck. utilizzare il metodo CellFormatting di cambiare il colore del carattere riga come segue

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


} 
Problemi correlati