如何在gridview上用任何值标记行?

时间:2011-01-19 07:36:34

标签: c# asp.net

我的gridview包含:

Fname|Born
aa   |03/05
bb   |19/01
cc   |03/08
dd   |19/01

如果今天是:19/01/2011如何用红色标记满足条件的2行?

在C#asp.net

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

this.MyGridView.RowDataBound += (s, ea) =>
{
 if (ea.Row.Cells[1].Text.Contains(string.Format("{0}/0{1}", DateTime.Now.Day, DateTime.Now.Month)))
 {
  ea.Row.BackColor = Color.Red;
 }
};
this.MyGridView.DataBind(); 

这就是你想要的。

请注意,string.format的值为0,不应该存在。这是因为DateTime.Now.Month返回1而不是01。

[编辑]

前一段时间注意到,有一种更好的方法可以使用

将日期与您的价值进行比较
if (ea.Row.Cells[1].Text.Contains(DateTime.Now.ToString(MM/dd)))

答案 1 :(得分:1)

尝试使用网格的RowDataBound事件来测试日期列 if(e.row.cell [1] = ...) ,从那里你可以访问e.Row.BackColor = ...

答案 2 :(得分:1)

在我看来,一个好的起点,如果你想以编程方式更改datagridview的设计设置,请使用datagridview.CellFormatting-Event

        private void _dgvDb_CellFormatting(Object sender, DataGridViewCellFormattingEventArgs e){
        if (e.Value != null && !String.IsNullOrEmpty(e.Value.ToString()))
        {
            switch (_dgvDb.Columns[e.ColumnIndex].Name)
            {
                case "YOUR_COLUMNNAME":
                    if("value==yourChosenValue"){

                    }
                break;
                case "else":
                }
         }
  }