比较两个dataGridView单元格与日期值

本文关键字:单元格 日期 dataGridView 两个 比较 | 更新日期: 2023-09-27 17:51:05

在我的c# windows窗体中,我有一个dataGridView从表中加载数据,

dataGridView8列其中两列有日期borrow_datereturn_date

我想比较这两列的日期,如果任何return_date单元格的日期大于borrow_date单元格的日期,使该单元格的背景为红色或使其前色为红色。

比较两个dataGridView单元格与日期值

下面的代码将帮助您

<asp:GridView ID="ctlGridView" runat="server" OnRowCreated="OnRowCreated" />

protected void OnRowCreated(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
   { 
    DataRowView drv = e.Row.DataItem as DataRowView;
    Object ob = drv["return_date"];
    Object ob1 = drv["borrow_date"];

    if (!Convert.IsDBNull(ob) && !Convert.IsDBNull(ob1) )
    {
       DateTime date1return_date;
        DateTime date2borrow_date;
         if (DateTime.TryParse(ob.ToString(), out date1return_date) && 
                   DateTime.TryParse(ob1.ToString(), out date2borrow_date))
         {
             if (date1return_date > date2borrow_date)
             {
                 TableCell cell = e.Row.Cells[1]; // Get your required cell
                 cell.BackColor = System.Drawing.Color.Red;
             }
         }
    }
  }

使用DateTime比较日期

DateTime结构

你可以用不同的方法:

1在加载完所有数据后循环整个grid

foreach (DataGridViewRow row in grid.Rows) 
     if (Convert.ToInt32(row.Cells["borrow_date"].Value) < Convert.ToInt32(row.Cells["return_date"].Value)) 
     {
         row.DefaultCellStyle.BackColor = Color.Red; 
     }

2在每行加载时执行。

private void gridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
   if (Convert.ToInt32(row.Cells["borrow_date"].Value) < Convert.ToInt32(row.Cells["return_date"].Value)) 
     {
         row.DefaultCellStyle.BackColor = Color.Red; 
     }
}