将两个dataGridView单元格与日期值进行比较?

时间:2014-03-20 17:14:01

标签: c#

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

dataGridView 8列其中两列日期borrow_datereturn_date

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

3 个答案:

答案 0 :(得分:0)

以下代码可以帮助您

<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;
             }
         }
    }
  }

答案 1 :(得分:0)

使用DateTime来比较日期。

DateTime Structure

答案 2 :(得分:0)

你可以通过不同的方式来做到这一点:

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; 
     }
}