输入数组长度大于此表中的列数
2011-05-16 11:19 通心菜 阅读(3696) 评论(0) 编辑 收藏 举报ASP.NET错误:输入数组长度大于此表中的列数。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentException: 输入数组长度大于此表中的列数。
ASP.NET错误:输入数组长度大于此表中的列数。 收藏
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentException: 输入数组长度大于此表中的列数。
错误代码如下:
DataTable dt = IOfferPubMst.GetInfoPubAllSAD(Ticket.CompanyID, txtTitle.Text);
dt.Columns.Add("successCnt", typeof(int));
dt.Columns.Add("realCnt", typeof(int));
dt.Columns.Add("plantCnt", typeof(int));
DataTable newdt = new DataTable();
DataRow[] newdr=dt.Select("realCnt>=plantCnt and successCnt<plantCnt");
foreach (DataRow row in newdr)
{
newdt.Rows.Add(row.ItemArray);
}
,原因在于DataTable newdt = new DataTable();此时newTable已经生成,但是此时并未给此表添加列,因此newTable表里的列数为0,在你dt.Rows.Add(rows);时就会异常。
解决的方法是:在DataTable newTable = new DataTable();之后使用newTable.Columns.add("列名");给newTable表对象加上列.然后再添加行。
或者 DataTable newdt = dt.Clone();
newdt.Clear();