You are tring impossible:
See the below code:
DataTable table = new DataTable();
Nullable<int> X = 10;
X = null;
table.Columns.Add("Dosage", X.GetType() );
string datavalue = "123";
DataRow row = table.NewRow();
row["Dosage"] = datavalue.Trim() == "" ? 0 : Convert.ToInt32(datavalue);
In this instead of 0, if you try null or DBNull or anything your application will not work, you should considering 0 instead