【问题标题】:Adding a datarow from an existing table to a new table将现有表中的数据行添加到新表
【发布时间】:2009-06-20 04:09:51
【问题描述】:

您好,我想将我从数据表返回的数据行添加到新数据表中

这是我正在使用的代码:

foreach (DataRow dr1 in dt.Rows)
{
  string AptType = dr1["AppointmentType"].ToString();
  if (AptType == "FreeTime")
  {
    dt2.ImportRow(dr1);
  }
}
RadGrid2.DataSource = dt2;
reader.Close();
conn.Close();

问题是,当我然后去运行带有表格的页面时,我得到一个数据键错误,并且其中一列未被识别

提前致谢

【问题讨论】:

  • 异常信息是什么

标签: c# .net ado.net asp.net-3.5 datarow


【解决方案1】:

这两个数据表是否具有相同的架构?如果它们与列、数据类型或键不匹配,则可能会引发这些错误。

【讨论】:

  • 它们应该具有相同的架构,我之前没有这样做过,我需要先设置列,因为我认为克隆函数会这样做。
  • 如果数据表 2 是数据表 1 的克隆,则不是,反之亦然。 Clone() 复制所有列和约束。您能否发布您的表格的简化架构?
  • #TempEngineerGroupMain ( AppointmentType VARCHAR(50), BookedDate DateTime, BookedFromTime DateTime, BookedToTime DateTime, TotalDays INT, JobMins INT ) 那是我的存储过程带回的临时表
  • 很好,但没有帮助。你能发布确切的错误信息吗?
  • 感谢您对此的帮助,我已修复它,这是表之间架构错误的情况,而我因睡眠不足而没有注意到它
【解决方案2】:

你应该使用 Typed TableDataAdapters,我会让你的生活更轻松......

这很容易做到和理解。

关注本教程Strongly Typed TableDataAdapters and DataTables

一旦你掌握了这个概念,你应该这样做:

MyTypedTableAdapter tableAdapter = new MyTypedTableAdapter();
    MyTypedDataTable dt = tableAdapter.GetData();
    foreach (MyTypedDataRow row in dt.Rows)
    {
        string AptType = row.AppointmentType;
        if (AptType == "FreeTime")
        {
            dt2.ImportRow(row);
        }
    }
    RadGrid2.DataSource = dt2;

【讨论】:

    猜你喜欢
    • 2014-06-23
    • 1970-01-01
    • 2011-05-31
    • 2015-11-04
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2018-09-06
    • 2013-05-11
    相关资源
    最近更新 更多