我有一个包含 Column 的 GridViewID
我有一个包含两列的 DataTable
ID
DONE
我正在ID
将 DataTable 中的列绑定到 GridView。直到没有它的罚款。
DONE
但现在我需要根据DataTable 中的列值设置 GridView 行的背景颜色。(如果DONE
值是true
必须更改行背景颜色。)
DONE
在不将Row 绑定到 GridView的情况下如何实现这一点?
为您的 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
在另一个表中作为外键。
此链接可能对您有所帮助
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;
}
为您的 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
}
}
我也解决了我的情况。但是对于替代行类型,没有设置背景颜色。
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;
}
}
你能告诉我可能是什么原因吗?