2011-01-19 54 views
0

我有一个sqldatasource,从我的服务器加载数据并将其放入数据网格中。根据行中列的值更改行的颜色

我有一个名为列clnumber有,数字1,2,3

我想的是,每一行都有不同的颜色取决于哪个号码是在DataRow中列

THIS IS守则基于怎样的数量我用

$(document).ready(function() { 

    $("#<%=GridView1.UniqueID%> tr").each(function() { 

     var number = $(this).children('td:eq(6)').text(); 

     if (number == 'OK') { 
      $(this).children('td').css({ "background-color": "lightgreen" }); 

     } 
    }) 
}); 
+0

一个明显的使用jQuery的那个片断的问题是,“Gridview1”实际上并没有参考任何你能重构它。现在,'#Gridview1'或'.Gridview1'实际上可能工作。看到我的新帖子下面用这个问题的jQuery解决方案。 – Didaxis 2011-01-19 18:00:12

回答

2

就算你给你的GridView称为“myGridView” CSS类,你可以做到以下几点:

$(document).ready(function() { 

    $('.myGridView tr').each(function() { 

     var number = $(this).children('td:eq(1)').text(); 

     if (number == '1') { 
      $(this).children('td').css('background', 'red'); 
     } 
    }) 
}); 

其中'td:eq(1)'表示连续的第二个单元格。这当然取决于你的行中的单元格包含这个幻数。

我敢肯定它不是最优雅的使用jQuery的,但如你所愿

1


第一行白色,第二个灰色?

if(rownumber%2 == 0) //white 
else //grey 

或实际上周围的其他方法。

+0

这将自动为网格中的每一行做到这一点? – MyHeadHurts 2011-01-19 17:16:50

+0

把它放在GridView_RowDataBound事件中,否则如果你的GridView有Paging,它将只应用于代码运行时出现的任何行。 – 2011-01-19 17:19:48

+0

是的。任何被两等分的数字将是白色的,其他的将是灰色的。 – 2011-01-19 17:23:18

1

如果指定应使用哪种颜色的数字实际上是在HTML输出中生成的,为什么不使用javascript?

1

您可以使用类似于此:

/// <summary> 
    /// Updates the row fore colour to show the line type 
    /// </summary> 
    /// <param name="sender">object</param> 
    /// <param name="e">args</param> 
    protected void gvLineValues_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     try 
     { 
      //Format the row 
      this.FormatRow(e); 
     } 
     catch (Exception ex) 
     { 
      ErrorLogging.LogError(ex); 
     } 
    } 

    /// <summary> 
     /// Formats a gridview row 
     /// </summary> 
     /// <param name="e">Gridview event args</param> 
     private void FormatRow(GridViewRowEventArgs e) 
     { 
      try 
      { 
       //Change the forecolor of the row 
       if (e.Row.RowType == DataControlRowType.DataRow) 
       { 
        OrderLine oOrderLine = e.Row.DataItem as OrderLine; 

        if (oOrderLine != null) 
        { 
         e.Row.ForeColor = oOrderLine.ForeColour; 


           //Check the line is over budget 
           if (oOrderLine.OverBudget) 
           { 
            e.Row.BackColor = ColourManager.OverBudgetItemBackColour; 
            e.Row.ToolTip = String.Format("Item over {0} and awaiting your approval", GlobalizationManager.Budget); 
           } 
           else 
           { 
            e.Row.BackColor = ColourManager.WithinBudgetItemBackColour; 
            e.Row.ToolTip = "Item awaiting your approval"; 
           } 
          } 
         } 

         //Change the back colour of the row if its a deleted row 
         if (oOrderLine.Deleted) 
         { 
          e.Row.Font.Strikeout = true; 
          e.Row.ToolTip = "This line has been deleted"; 
         } 
        } 
       } 
      } 
      catch (Exception) 
      { 
       throw; 
      } 
     } 

你可以做类似

switch (DataItem.ColorNumber) 
{ 
case 1: 

e.row.backcolor = Color.blue; 

break; 

case 2: 

e.row.backcolor = Color.red; 

break; 

case 3: 

e.row.backcolor = Color.white; 

break; 

}