0

オブジェクトをDataTableに入れて、DataGridのItemsSourceとして使用しようとしています。

foreach (Translate t in item.Translations)
{
      if (rowArray[t.IdSprache] == null)
      {
          rowArray[t.IdSprache] = t; //here I add the Translate objects to the object[]
      }
      }
      dt.Rows.Add(rowArray); //adding the object[] to the DataTable
      var test = dt.Rows[cnt].ItemArray[1] as Translate; //aaaaaaaaaaaaaaand the object is gone (test is always null)
      cnt++; 
}

すべて正常に動作しますが、DataRowの要素をTranslate-Objectsにキャストし直したい場合は、常に。を取得しnullます。

行を調べるとItemArray、オブジェクトはオブジェクトではなく文字列(Assembly.Type)としてのみ表示されTranslateます。

誰かがこれの回避策/解決策を知っていますか?

4

1 に答える 1

1

の組み込み関数を使用してDataSet、スキーマと行を作成してみてください。何かのようなもの:

Translate t1 = new Translate() { IdSprache = 0 };
Translate t2 = new Translate() { IdSprache = 3 };
Translate t3 = new Translate() { IdSprache = 7 };
DataTable dt = new DataTable();
for (int i = 0; i < 10; i++)
    dt.Columns.Add(new DataColumn("C" + i, typeof(Translate)));
for (int i = 0; i < 5; i++)
{
    DataRow dr = dt.NewRow();
    dr[i] = new Translate() { IdSprache = i };
    dt.Rows.Add(dr);
}
for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 5; j++)
    {
        if (dt.Rows[i][j] as Translate != null)
            Console.Write("T");
        else
            Console.Write("N");
    }
    Console.WriteLine();
}

プリント

TNNNN
NTNNN
NNTNN
NNNTN
NNNNT

于 2013-03-14T15:30:23.210 に答える