system.argumentexception列不属于表

问题描述

我有一个定义的数据集,其中包含表Customer。我正在尝试向此数据集添加一行,但以下是我的代码

DataSet ds = new DataSet1();
DataTable dt = new DataTable("Customer");

using (StreamReader reader = new StreamReader(fileStream))
{
   while(reader.Peek() >= 0)
   {
      string row = reader.ReadLine();
      string[] content = row.Split('|');
      DaTarow dr = dt.NewRow();
      dr["mother_name"] = content[0];  // I'm getting an error here.
      dr["beneficial_name"] = content[1];
      dr["industry_code"] = content[2];
      dt.Rows.Add(dr);
   }

}

filestream.Close();
ds.Tables.Add(dt);
cryRpt.SetDataSource(ds);

所以我在第dr["emp_lastname"] = content[0];行中遇到异常错误,该键存在于我的数据集中的表中。所以我假设当我执行dt.NewRow()时,它将创建我的数据集表行的实例。我该如何解决?我只想在DataSet表中填充一行。下面是我的数据集的屏幕截图

enter image description here

解决方法

您在ds中有一个数据集实例,在dt中有一个DataTable实例。该DataTable实例无论如何都不会链接到您的数据集。因此,数据表没有列。

执行dt=ds.Tables["Customer"];来获取符合您键入的数据集中的模式的数据表实例。