2. try to add an expression column, convert the value to the right type, for example
DataTable dt = new DataTable();
dt.Columns.Add("num",typeof(string));
string[] ss = {"0","-1","2"};
foreach (string s in ss)
{
DataRow dr = dt.NewRow();
dr["num"] = s;
dt.Rows.Add(dr);
}
dt.Columns.Add("newnum", typeof(int), "Convert(num, 'System.Int32')");
DataView dv = dt.DefaultView;
dv.Sort = "newnum asc" ;
foreach (DataRowView drv in dv)
Console.WriteLine(drv["num"]);