3

2 に参加しようとしてDataTablesいますが、次のエラーが表示されます。

Object reference not set to an instance of an object 

これは私がやっていることです:

DataTable NodeDataTable = new DataTable();
DataTable sdosDataTable = new DataTable();
private DataTable NodedataTable()
    {
        XmlTextReader xmlreader = new XmlTextReader(Server.MapPath("stuff.xml"));
        DataSet ds = new DataSet();
        ds.ReadXml(xmlreader);
        xmlreader.Close();
        if (ds.Tables.Count != 0)
        {
            NodeDataTable = ds.Tables[22];
        }
        return NodeDataTable;
    }
    private DataTable SdosDataTable()
    {
        XmlTextReader xmlreader = new XmlTextReader(Server.MapPath("stuff.xml"));
        DataSet ds = new DataSet();
        ds.ReadXml(xmlreader);
        xmlreader.Close();
        if (ds.Tables.Count != 0)
        {
            sdosDataTable = ds.Tables[10];
        }
        return sdosDataTable;
    }

両方の DataTable を結合するには:

private void JoinNodeSdosDT()
    {
        DataColumn obj_NodeID, obj_SdosID;
        DataSet ds1 = new DataSet();    
        NodeDataTable = NodeDataTable.Copy();
        sdosDataTable = sdosDataTable.Copy();
        ds1.Tables.Add(NodeDataTable);
        ds1.Tables.Add(sdosDataTable);
        obj_NodeID = ds1.Tables["node"].Columns["node_Id"];
        obj_SdosID = ds1.Tables["sdos"].Columns["node_Id"];    
        sdosDataTable.Columns.Add("typeCodee");           
        DataRelation obj_NodeandSdosRelation = new DataRelation("dept_reln", obj_NodeID, obj_SdosID);
        ds1.Relations.Add(obj_NodeandSdosRelation); 
        foreach (DataRow dr_NodeSods in ds1.Tables["sdos"].Rows)
        {
            DataRow dr_NondeeeR = dr_NodeSods.GetParentRow("dept_reln");
            dr_NodeSods["typeCodee"] = dr_NondeeeR["typeCode"];
        }
        DataTable dtResult = ds1.Tables["sdos"].DefaultView.ToTable(false, "node_Id", "typeCode", "sdos_Id");
        GridView1.DataSource = dtResult;           
    }

問題を解決するためにここで何ができるか、一致する ID がいくつかあります。

データテーブルの画像を削除しましたが、それらは使用できません。

4

2 に答える 2

1

DataRow.Item (String)のドキュメントに記載されているように、存在しない列にアクセスすると、ArgumentException. あなたが得ているのはNullReferenceException. それがあなたが与えた行で実際に起こった場合、私はそれを推測することしかできません

DataRow dr_NondeeeR = dr_NodeSods.GetParentRow("dept_reln");

null 参照を与えます。

于 2013-06-13T12:07:08.227 に答える
1

次のように見えdr_NondeeeRますnull:

DataRow dr_NondeeeR = dr_NodeSods.GetParentRow("dept_reln");
dr_NodeSods["typeCodee"] = dr_NondeeeR["typeCode"];

なんらかの理由GetParentRowで戻ってくるからnullです。

于 2013-06-13T12:01:41.313 に答える