There is difference between DbNull.Value and null.
"Do not confuse the notion of null in an object-oriented programming language with a DBNull object. In an object-oriented programming language, null means the absence of a reference to an object. DBNull represents an uninitialized variant or nonexistent database column."
If there is possibility that your query returns NULL (nonexistent value for any column) you should compare values in dataReader with DBNUll.Value.
Oversimplified conclusion is: null is for general OOP and DBNull.Value is ADO.Net
someControl.Text = dr.ISDBNull(indexOfMyColumn) ? "" : dr["myColumnName"].ToString();
Firendly advice:
Use try/catch block and always close dataReader!
P.S.
if (dr.HasRows) condition is redundant, check why ;).