2011-12-12 27 views
7

VS2005 C# Server-side kodlamasını kullanıyorum.Bir koşul karşılandığında GridView satırını vurgulayın

VS2005 version'da, bir koşul yerine getirildiğinde GridView'da bir satırın highlight mümkün olduğunu bilmek isterim? Örneğin. Risk numaralı sütun, bu belirli satır için veritabanında yüksek olarak depolanırsa, satır highlighted in Red olacaktır.

Mümkün mü?


Düzenleme:

Güncel kodu: maden hücrede 3. olan Ama renk hala değişmez böylece

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

varsayıyorum sütun hücresi, 0'dan başlar.

Herhangi bir fikri olan var mı?

+0

Hayır, OnDataBound sadece ne istediğinizi olmadığı bir kez ateş alır. OnRowDataBound'u çalıştığınızda herhangi bir hata görünüyor mu? – S200

+0

'GridView_OnRowDataBound' yönteminizin 'public' olarak ayarlandığından emin olun. – S200

+1

@RUiHAO çözümümde, '.Text'in, DataBound olayı yerine, DataContain olayından daha fazla uygulanabilir olacağını düşünüyorum. Çünkü değer gerçekten bir kontrolün içerdiği ve hücreye değil, 'DataBinder.Eval' sizin için çalışmalı. – V4Vendetta

cevap

10

Evet, ızgara görünümünüze OnRowDataBound="yourGridview_RowDataBound" ekleyin. Bu olay her gridview satırı için tetiklenir. Böyle

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

şey: ardındaki kodunda

, bu var.

+0

Yönteminizi denedim ancak renk hala değişmiyor. – gymcode

+0

e.Row.Cells'ınızı kontrol edin. [3]. Metin gerçekten "Yüksek" ye eşittir (doğru durumlar, ekstra boşluklar, vb.). Değerleri görüntülemek için Response.Write ("-" + e.Row.Cells [3] .Text + "-") kullanabilirsiniz. – S200

+0

Doğru, sayfamın üst kısmında üçüncü sütundaki metin dolu. – gymcode

1

Ardından

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

sizin vurgulama renk seçimine sıranın BackColor belirtilen Yüksek Riskli söz sütununuzu sahip sıranın ızgara ve yakalamak tutun RowDataBound olay için abone olmaları gerektiğini
3

RowDataBound Olayı'nı kullanın. Bu durumda size RowDataBound denemede durumunuzu

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

dayalı css eklemek alacağı:

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

bkz 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

Düz kod değil, fikrinizin bir açıklamasını eklediyseniz yararlı olur. –