在我的c#windows窗体中,我有一个 dataGridView ,可以从表中加载数据,
dataGridView
有 8列其中两列日期值
borrow_date
和return_date
。
如果任何return_date
单元格的日期大于borrow_date
单元格的日期,我希望比较这两列中的列,使该单元格的背景变为红色或使其成为可能前红色。
答案 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
来比较日期。
答案 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;
}
}