5

我有一个包含 Column 的 GridViewID

我有一个包含两列的 DataTable

ID
DONE

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

DONE但现在我需要根据DataTable 中的列值设置 GridView 行的背景颜色。(如果DONE值是true必须更改行背景颜色。)

DONE在不将Row 绑定到 GridView的情况下如何实现这一点?

4

4 回答 4

8

为您的 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;
            }
        }

有关更详细的实现,请参阅以下链接:
根据条件更改 GridView 行颜色

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

于 2012-10-31T08:09:43.500 回答
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-列在-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;
            }
于 2013-02-20T04:17:11.787 回答
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
    }
}
于 2012-10-31T08:11:51.893 回答
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;
            }                   

        }

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

于 2013-01-28T14:03:50.317 回答