2011-12-12 2 views
7

Sto utilizzando la codifica VS2005 C# Server-side.Evidenzia riga GridView quando viene soddisfatta una condizione

Sono curioso di sapere che in VS2005 version, è possibile highlight una riga in un GridView quando viene soddisfatta una condizione? Per esempio. Se la colonna Rischio viene memorizzata come alta nel database per quella riga specifica, la riga sarà highlighted in Red.

È possibile?


Edit:

codice attuale:

protected void GridView1_OnRowDataBound(Object sender, GridViewRowEventArgs e) 
{ 

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    // do your stuffs here, for example if column risk is your third column: 
    if (e.Row.Cells[3].Text == "H") 
    { 
     e.Row.BackColor = Color.Red; 
    } 
} 
} 

presumo cella della colonna parte da 0, quindi il mio è in cella di 3. Ma il colore ancora non cambia.

Qualcuno ha qualche idea?

+0

No, OnDataBound solo ottiene sparato una volta che non è quello che si desidera. Mostra qualche errore quando provi OnRowDataBound? – S200

+0

Assicurati che il tuo metodo "GridView_OnRowDataBound" sia impostato su "pubblico". – S200

+1

@RUiHAO controlla la mia soluzione, penso che '.Text' sarebbe più applicabile nell'evento DataBound piuttosto che' RowDataBound' poiché il valore è effettivamente contenuto da un controllo e non dalla cella, quindi 'DataBinder.Eval' dovrebbe funzionare per te – V4Vendetta

risposta

10

Sì, aggiungere OnRowDataBound="yourGridview_RowDataBound" alla griglia. Questo evento viene attivato per ogni riga di griglia.

nel codice dietro, hanno questa:

public void yourGridview_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // do your stuffs here, for example if column risk is your third column: 
     if (e.Row.Cells[2].Text == 'high') 
     { 
      e.Row.BackColor = Color.Red; 
     } 
    } 
} 

Qualcosa del genere.

+0

Ho provato il tuo metodo ma il colore continua a non cambiare. – gymcode

+0

Controlla il tuo e.Row.Cells [3] .Text è veramente uguale a "Alto" (casi corretti, senza spazi aggiuntivi, ecc.). È possibile utilizzare Response.Write ("-" + e.Row.Cells [3] .Text + "-") per visualizzare i valori. – S200

+0

È corretto, nella parte superiore della mia pagina è pieno del testo nella mia terza colonna. – gymcode

1

Si dovrebbe sottoscrivere l'RowDataBound evento della griglia e afferrare la riga che ha la vostra colonna di nota del rischio come alto quindi impostare il BackColor della riga a vostra scelta di colore evidenziando

If (e.Row.RowType == DataControlRowType.DataRow) 
{ 
     //DataBinder.Eval(e.Row.DataItem,"Risk")) 
     //if this is high then set the color 
     e.Row.BackColor = Drawing.Color.Yellow 
} 

MSDN Formatting the GridView Based on the Underlying Data

3

Usa evento RowDataBound. In tal caso si otterrebbe aggiungere il CSS in base alla propria condizione

void GridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
    { 

    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // Logic for High 
     if(e.Row.Cells[1].Text > 100) 
     //set color 
     e.Row.Attributes.Add("style", "this.style.backgroundColor = '#FFFFFF';"); 

    } 

    } 
1

in RowDataBound prova:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    // searching through the rows 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if(int.Parse(DataBinder.Eval(e.Row.DataItem,"Risk").ToString()) > 100) 
     { 
      e.Row.BackColor = Color.FromName("#FAF7DA"); // is a "new" row 
     } 
    } 
} 
+0

vedere 'http: // blog.jerryleelajohn.com/2009/08/rowdatabound-vs2005.html' –

-1
 if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      e.Row.BackColor = Color.Yellow; 

      Label l1 = (Label)e.Row.FindControl("lblage"); 
      if(Convert.ToInt32(l1.Text)>=30) 
      { 
       e.Row.BackColor = Color.Tomato; 
      } 

     } 
+0

Sarebbe utile aggiungere una descrizione della tua idea, non un codice semplice. –