Вы точно присваиваете этим столбцам значения NULL или пустую строку? Если вы не назначаете столбцу какое-либо значение, оно по умолчанию будет равно NULL (если не установлено ограничение DEFAULT). В противном случае вы можете присвоить значение NULL, выполнив -
ds.Tables[0].Rows[0]["Col"] = null;
Если вы назначаете пустую строку этим столбцам, она не равна NULL.
И если в столбце есть значение NULL, помеченное как NOT NULLABLE, оно выдаст ошибку -
Столбец Col1 не допускает нулевые значения.
EDIT:
Под NOT NULLABLE я подразумеваю AllowDBNull = false.
Ваш код кажется правильным. Можете ли вы попробовать обрезать текст?
Вот весь код -
DataTable dt = new DataTable();
DataColumn column = new DataColumn("Col1");
column.AllowDBNull = false;
dt.Columns.Add(column);
DataRow dr = dt.NewRow();
dr["Col1"] = null;
dt.Rows.Add(dr);