2011-02-19 39 views

回答

41
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    e.Row.Attributes.Add("style", "cursor:help;"); 
    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Alternate) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     {     
      e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='orange'"); 
      e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#E56E94'"); 
      e.Row.BackColor = Color.FromName("#E56E94");     
     }   
    } 
    else 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='orange'"); 
      e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='gray'"); 
      e.Row.BackColor = Color.FromName("gray");     
     } 

     //e.Row.Cells[0].BackColor = Color.FromName("gray"); 
     //e.Row.Cells[1].BackColor = Color.FromName("gray"); 
     //e.Row.Cells[2].BackColor = Color.FromName("gray"); 
     //e.Row.Cells[3].BackColor = Color.FromName("gray"); 
     //e.Row.Cells[4].BackColor = Color.FromName("gray"); 
     //e.Row.BorderWidth = 2; 
     //e.Row.BorderColor = Color.FromName("#43C6DB"); 
    } 
} 
+2

而不是修改的`Row`屬性等,這是多少更好地創建兩個css類並且只修改`e.Row.CssClass`。簡單的代碼可以更好地分離邏輯和視圖。 – 2015-12-14 11:43:11

8

爲您的GridView創建GridView1_RowDataBound事件。

//Check if it is not header or footer row 
if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    //Check your condition here 
    If(Condition True) 
    { 
     e.Row.BackColor = Drawing.Color.Red // This will make row back color red 
    } 
} 
19
protected void DrugGridView_RowDataBound(object sender, GridViewRowEventArgs e) 

{ 
    // To check condition on integer value 
    if (Convert.ToInt16(DataBinder.Eval(e.Row.DataItem, "Dosage")) == 50) 
    { 
     e.Row.BackColor = System.Drawing.Color.Cyan; 
    } 
} 
-4
\\loop throgh all rows of the grid view 

if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value1") 
{ 
    GridView1.Rows[i - 1].ForeColor = Color.Black; 
} 
else if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value2") 
{ 
    GridView1.Rows[i - 1].ForeColor = Color.Blue; 
} 
else if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value3") 
{ 
    GridView1.Rows[i - 1].ForeColor = Color.Red; 
} 
else if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value4") 
{ 
    GridView1.Rows[i - 1].ForeColor = Color.Green; 
} 
3

此方法同時修改後的顏色(暗紅色)和文本(白色)如果一個特定的字符串(「TextToMatch」)中的列之一發生:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.Cells[8].Text.Equals("TextToMatch")) 
    { 
     e.Row.BackColor = System.Drawing.Color.DarkRed; 
     e.Row.ForeColor = System.Drawing.Color.White; 
    } 
} 

或者另一種方式來寫它:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.Cells[8].Text.Equals("TextToMatch")) 
    { 
     e.Row.Attributes.CssStyle.Value = "background-color: DarkRed; color: White"; 
    } 
} 
0

或者,您可以將行DataItem強制轉換爲類,然後根據類屬性添加條件。下面是我用行轉換爲一個名爲TimetableModel類/模型,然後在if語句可以訪問所有類字段/屬性的示例:

protected void GridView_TimeTable_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       if (e.Row.RowType == DataControlRowType.DataRow) 
       { 
        var tt = (TimetableModel)(e.Row.DataItem); 
        if (tt.Unpublsihed) 
         e.Row.BackColor = System.Drawing.Color.Red; 
        else 
         e.Row.BackColor = System.Drawing.Color.Green; 
       } 
      } 
     } 
相關問題