代码改变世界

输入数组长度大于此表中的列数

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();