-3
我想通過「addRow」方法將數據發送到我的Provider類並操作數據表。當它去做的方法,我得到System.NullReferenceException
任何建議,我知道它在dt.newRow()
之前崩潰,所以一些如何datatable爲空?運行方法時空引用異常
class Provider
{
private DataTable dt;
private DataRow dataRow;
List<string> routes;
private int _routeCount;
private int count;
public int RouteCount
{
get { return _routeCount; }
set { _routeCount = value; }
}
private void Initial()
{
dt = new DataTable();
dataRow = dt.NewRow();
routes = new List<string>();
_routeCount = 0;
count = 0;
}
/*We Edit the table and create itfrom our excel data we got earlier*/
public DataTable Load(string table)
{
DataTable d = null;
dt = new DataTable();
try
{
return d;
}
catch (Exception x)
{
MessageBox.Show(x.Message);
return dt;
}
}
public List<string> GetRoutes()
{
return routes;
}
public DataTable GetCustomers()
{
return dt;
}
public void addRow(string data)
{
Random rnd = new Random();
Console.WriteLine("count = " + count);
//Getting Routes loaded
try
{
if(count == 0)
{
dataRow = dt.NewRow();
}
switch (count)
{
case 0:
var maxC = Convert.ToInt32(999999999999);
var minC = Convert.ToInt32(100000000000);
dataRow["waybill"] = rnd.Next(minC, maxC) + "";
break;
case 1:
dataRow["pieces"] = data;
break;
case 2:
dataRow["receiver"] = data;
break;
case 3:
dataRow["add"] = data;
break;
case 4 :
dataRow["number"] = data;
break;
}
if(count == 5)
{
dt.Rows.Add(dataRow);
count = 0;
}
count++;
// return 0;
}
catch (Exception x)
{
MessageBox.Show(x.Message +"Call that no good tech guuy of yours after you try what you just did again ^_^");
// return 1;
}
}
public void addRoute(string route)
{
Console.WriteLine(routes);
if(routes != null)
{
routes.Add(route);
_routeCount = routes.Capacity;
// return 0;
}
}
public DataTable Loading(string request)
{
Console.WriteLine("sooooooo:" + request);
DataTable dTemp = null;
string searchExpression = "waybill = " + request;
DataRow[] foundRows = dt.Select(searchExpression);
dTemp = new DataTable();
foreach(DataRow row in foundRows)
{
dTemp.Rows.Add(row);
}
try
{
return dTemp;
}
catch (Exception x)
{
MessageBox.Show(x.Message);
return dt;
}
}
}
}
我只是把dt = new DataTable(); –
作爲變量,我想初始化對象的初始方法並沒有運行,所以它仍然只是宣佈,但沒有分配任何奇怪的場景? –
所以把「私人DataTable DT =新的DatTable()」固定它 –