比较两个dataGridView单元格与日期值
本文关键字:单元格 日期 dataGridView 两个 比较 | 更新日期: 2023-09-27 17:51:05
在我的c# windows窗体中,我有一个dataGridView从表中加载数据,
dataGridView
有8列其中两列有日期值borrow_date
和return_date
。
我想比较这两列的日期,如果任何return_date
单元格的日期大于borrow_date
单元格的日期,使该单元格的背景为红色或使其前色为红色。
下面的代码将帮助您
<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;
}
}