Accordingly to your code:
string cellText = dt.Rows[i][2].ToString();
CheckBox chk = (CheckBox)row.Cells[0].FindControl("chkRow");
if (cellText == "1")
{
chk.Checked = true;
}
else
{
chk.Checked = false;
}
Probably... in last row
cellText
variable does not hold "1"...