C# 无法从数据表导入或添加行

C# 无法从数据表导入或添加行,c#,asp.net,datatable,datarow,C#,Asp.net,Datatable,Datarow,我正在尝试将从数据库获取的行添加到数据表。 首先,我尝试使用bucketdt.Rows.Add(r)我收到一个错误,说行属于另一个表 然后我使用buckedt.ImportRow(r)则它根本不复制该行 if (HttpContext.Current.User.Identity.IsAuthenticated) { //DataTable f = new DataTable(); dosObject = new DataOperations();

我正在尝试将从数据库获取的行添加到数据表。
首先,我尝试使用
bucketdt.Rows.Add(r)我收到一个错误,说行属于另一个表
然后我使用
buckedt.ImportRow(r)则它根本不复制该行

if (HttpContext.Current.User.Identity.IsAuthenticated)
    {
        //DataTable f = new DataTable();
        dosObject = new DataOperations();
        bucketdt = new DataTable();
        count=0;
        foreach (string key in Session.Keys)
        {
            string val = Session[key].ToString();
            DataRow r = bucketdt.NewRow();
            r = dosObject.SubCategoryDetails2(Convert.ToInt16(val)).Rows[0];
            bucketdt.ImportRow(r);
            bucketdt.AcceptChanges();
        }
        GridView1.Enabled = true;
        GridView1.DataSource = bucketdt;
        GridView1.DataBind();
    }
    else
        Response.Redirect(FormsAuthentication.LoginUrl);
我错过什么了吗

现在我试着按照@wonko79告诉我的那样修改代码

 DataTable f = new DataTable();
        dosObject = new DataOperations();
        bucketdt = new DataTable();
        count=0;
        foreach (string key in Session.Keys)
        {
            string val = Session[key].ToString();

            DataRow r = bucketdt.NewRow();
            f = dosObject.SubCategoryDetails2(Convert.ToInt16(val));
            r["Id"]=f.Rows[0].ItemArray[0].ToString();
            r["SubCategoryName"] = f.Rows[0].ItemArray[1].ToString();
            r["Make"] = f.Rows[0].ItemArray[2].ToString();
            r["Cost"] = f.Rows[0].ItemArray[3].ToString();
            //bucketdt.ImportRow(r);
            bucketdt.Rows.Add(r);
            bucketdt.AcceptChanges();

n现在,它表示该行不包含列:“Id”不属于表。

您正在覆盖数据行r,该数据行r遵循Buckedt的模式,数据行跟随另一个模式

DataRow r = bucketdt.NewRow();
        r = dosObject.SubCategoryDetails2(Convert.ToInt16(val)).Rows[0]; // overwrites r with a DataRow following another schema

那么我应该分别复制每个项目吗?是的。或者,您可以将字段映射和查询包装为。请注意编辑!,很抱歉打扰你,我又遇到了一个错误!好的,正如错误消息告诉您的那样,表bucketdt似乎不包含名为“Id”的列(可能是Id还是Id?)。还要注意的是,每个线程只能问一个问题。哦,是这样吗?但请引导我克服这一点!DataGridView比GridView简单得多:(