2

追加する必要があり、MyHandler に渡された「スキーム」から内部的に構築されたテーブルにその行を追加newRowする必要があります。MyHandler問題は、それを使用dt.ImportRow(row);しても行が追加されないことです。テーブルに追加newRowしてから追加すると機能しますが、テーブルに追加したくありません。これは、新しい行を作成できるようにするためです。thandler.Add(t.row[t.Rows.Count - 1]);tt

なぜdt.ImportRow(row);機能しないのですか?修正方法は?

{
   var t = new DataTable();
   t.Columns.Add(new DataColumn("Col1", typeof(string)));
   t.Columns.Add(new DataColumn("Col2", typeof(byte)));
   t.Columns.Add(new DataColumn("Col3", typeof(byte)));
   t.Rows.Add("a", 1, 1);
   t.Rows.Add("b", 2, 2);

   // MyHandler build internal table from the scheme
   var handler = new MyHandler(t.Clone());

   var newRow = t.NewRow();
   row["Col1"] = "c";
   row["Col2"] = 3;
   row["Col3"] = 3;

   handler.Add(row);
}

public class MyHandler
{
    DataTable dt;
    public class MyHandler(DataTable scheme)
    {
        dt = scheme;
    }
    public void Add(DataRow row)
    {
       dt.ImportRow(row);
    }
}
4

1 に答える 1

4

ImportRow別のDataTableから行を追加するためにのみ使用する必要があります。MSDNによると、で作成された行DataTable.NewRowで追加する必要がありDataTable.Rows.Addます。

于 2012-06-14T14:43:29.187 に答える