Start with the
DataGridView.RowPrePaint[
^] event: it is called for row just before it is drawn. In it, check the expiry and set the foreground / background colours appropriately.
You will also need a Timer to Invalidate the DGV so that it does get repainted.
To set a "countdown timer" for each row, use the same event and timer, and update the row "countdown" column.