使用绑定数据集中的值设置网格视图行背景颜色

时间:2012-10-31 08:05:09

标签: c# asp.net gridview datatable

我有一个包含列ID

的GridView

我有一个包含两列的DataTable

ID
DONE

我将DataTable中的ID列绑定到GridView。 直到没有它的罚款。

但现在我需要在DataTable中的DONE列值上设置GridView行的背景颜色。(如果DONE值为true,则行背景颜色必须为改变。)

如何在不将DONE行绑定到GridView ??

的情况下实现此目的

4 个答案:

答案 0 :(得分:7)

为您的GridView创建GridView1_RowDataBound事件。

if (e.Row.RowType == DataControlRowType.DataRow)
{
    //Check your condition here
    //Get Id from here and based on Id check value in the 
    //underlying dataSource Row where you have "DONE" column value
    // e.g.
    // (gridview.DataSource as DataTable), now you can find your row and cell 
    // of "Done"
    If(Condition True)
    {
        e.Row.BackColor = Drawing.Color.Red;  // your color settings 
    }
}

示例代码段:

protected void EmployeeAvailabilityGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
               if (e.Row.RowType == DataControlRowType.DataRow)
                {                  
                    if(Convert.ToBoolean(DataBinder.Eval(e.Row.DataItem, "DONE")))
                    {
                        e.Row.BackColor = System.Drawing.Color.LightPink;
                    }
                }
            }
            catch (Exception ex)
            {
                //ErrorLabel.Text = ex.Message;
            }
        }

有关更详细的实施,请参阅以下链接:
Change GridView row color based on condition

注意:如果DataSource中不存在该行,那么您必须有一些逻辑才能从其他地方获取该行。可能是您在另一个表中将ID作为外键。

答案 1 :(得分:2)

此链接可能会帮助您

http://deepak-sharma.net/2012/01/27/how-to-change-the-background-color-of-rows-in-a-gridview-based-on-the-value-of-a-column-in-asp-net-3-5/

if (e.Row.RowType == DataControlRowType.DataRow)
    {
            // determine the value of the UnitsInStock field
            if((DataBinder.Eval(e.Row.DataItem,"strShift")).ToString() =="Alarm")
            {
                    // color the background of the row yellow
                    e.Row.BackColor = Color.Yellow;
            }

答案 2 :(得分:0)

为GridView创建MyGridView _RowDataBound事件。

if (e.Row.RowType = DataControlRowType.DataRow)
{
    //Check your condition here, Cells[1] for ex. is DONE/Not Done column 
    If(e.Row.Cells[1].Text == "DONE")
    {
        e.Row.BackColor = Drawing.Color.Green // This will make row back color green
    }
}

答案 3 :(得分:0)

我也解决了我的病情。但对于替代行类型,未设置背景颜色。

       if (e.Row.RowType == DataControlRowType.DataRow)
        {
          Label LabelStatus = (Label)e.Row.FindControl("lblStatus");
            if(LabelStatus.Text.Trim().ToLower().Equals("inactive"))
            {
                e.Row.BackColor = System.Drawing.Color.Gray;
            }                   

        }

你能告诉我可能是什么原因吗?