我有一个包含列ID
我有一个包含两列的DataTable
ID
DONE
我将DataTable中的ID
列绑定到GridView。
直到没有它的罚款。
但现在我需要在DataTable中的DONE
列值上设置GridView行的背景颜色。(如果DONE
值为true
,则行背景颜色必须为改变。)
如何在不将DONE
行绑定到GridView ??
答案 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)
此链接可能会帮助您
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;
}
}
你能告诉我可能是什么原因吗?