【问题标题】:Unable to import or add row from a datatable无法从数据表导入或添加行
【发布时间】:2013-10-24 08:44:27
【问题描述】:

我正在尝试将从数据库获取的行添加到 DataTable。
首先我尝试使用 bucketdt.Rows.Add(r); 我收到一个错误提示 行属于另一个表
然后我用bucketdt.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' 不属于表。

【问题讨论】:

    标签: c# asp.net datatable datarow


    【解决方案1】:

    您正在使用遵循另一个模式的 DataRow 覆盖遵循 bucketdt 模式的 DataRow r。

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

    【讨论】:

    • 那么我应该单独复制每个项目吗?
    • 是的。或者您可以使用TableAdapter 包装提交的映射和查询。
    • 请注意修改!,很抱歉打扰您,但我遇到了另一个错误!
    • 好吧,正如错误消息告诉您的那样,您的表 bucketdt 似乎不包含名为“Id”的列(可能是 ID 或 id?)。另请注意,每个线程只能问一个问题。
    • 哦是这样吗?但是请指导我克服这个问题! DataGridView 比 GridView 容易得多:(
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    相关资源
    最近更新 更多