【问题标题】:Copying each row to new table将每一行复制到新表
【发布时间】:2014-01-02 23:52:16
【问题描述】:

在将每一行复制到新表时,我在“temp[i].Rows.Add(dr.ItemArray);”行中遇到“对象引用未设置为对象实例”。这里注意 dr.itemarray 不是一个空数组。

    DataTable dt;
    DataTable[] temp=null;

    dt =(DataTable)Session["datatable"];

    temp = new DataTable[dt.Rows.Count];
    int i;

    foreach (DataRow dr in dt.Rows)
    {
        for (i = 0; i < dt.Rows.Count;i++)
        {
            temp[i].Rows.Add(dr.ItemArray);
            break;
        }
    }

【问题讨论】:

    标签: c# asp.net datatable


    【解决方案1】:

    你已经初始化了数组,但没有初始化其中的DataTable

    foreach (DataRow dr in dt.Rows)
    {
        for (i = 0; i < dt.Rows.Count;i++)
        {
            temp[i] = new DataTable(); // <--------
            temp[i].Rows.Add(dr.ItemArray);
            break;
        }
    }
    

    但是,我必须承认我不理解您的代码。我假设您想将 originqal 表中的每一行复制到它自己的DataTable 中。那么你的循环太多了:

    for (i = 0; i < dt.Rows.Count;i++)
    {
        DataRow row = dt.Rows[i];
        temp[i] = new DataTable();
        temp[i].ImportRow(row);
    }
    

    【讨论】:

    • 谢谢你的回复。这里我已经初始化了 temp = new DataTable[dt.Rows.Count];
    • @user3104758:是的,您已经初始化了数组本身,但不是其中的每个表。请注意,我已经编辑了我的答案。
    • @user3104758_ 您是否注意到我已经编辑了我的答案并提供了不同的方法?
    • 我尝试了您的第二个代码 sn-p.. 但在“temp[i].ImportRow(row)”行中仍然出现相同的错误,尽管它的 itemsarray 中有 12 个项目
    • @user3104758:你已经初始化了数组但是你还没有初始化DataTables。所以数组的长度是12但它不包含12个初始化的表,都是Nothing。这就是我使用... new DataTable 的原因。使用调试器查看temp,你会发现它只包含Nothings。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 2021-03-22
    • 2021-12-01
    相关资源
    最近更新 更多