[C#]DataSet.xsdを作成すると、自動でデータセットクラスが生成される。

以前に、CrystalReportsで自作DataSetを元に帳票を印刷する方法を説明しましたが、説明の中に無駄な作業工程がありました。
 参考記事:CrystalReportsで自作DataSetを元に帳票を印刷する



どこに無駄があるかというと、下記のイベントハンドラ処理です。

private void button1_Click( object sender, EventArgs e ) {
    // レコード定義を行う
    DataTable table = new DataTable();
    table.Columns.Add("id",    Type.GetType("System.String"));
    table.Columns.Add("name",  Type.GetType("System.String"));
    table.Columns.Add("price", Type.GetType("System.Int32"));
 
    // 印字データを追加
    DataRow row;
    row = table.NewRow();
    row["id"]    = "iten_no1";
    row["name"]  = "りんご";
    row["price"] = 200;
    table.Rows.Add(row);
 
    row = table.NewRow();
    row["id"]    = "iten_no2";
    row["name"]  = "みかん";
    row["price"] = 220;
    table.Rows.Add(row);
 
    row = table.NewRow();
    row["id"]    = "iten_no3";
    row["name"]  = "ばなな";
    row["price"] = 40;
    table.Rows.Add(row);
 
    // 印字データをセット
    crystalReport1.SetDataSource( table );
    crystalReport1.Refresh();
 
    // プリンタに印刷
    crystalReport1.PrintToPrinter( 0, false, 0, 0 );
}



上記の説明ではColumns.Add()メソッドでデータセットの列定義を行っていますが、DataSet1.xsdファイルでデータセットの定義を行っているので、列定義の処理は不要でした。
xsdファイルの編集で行った成果物としてVisualStudioがRepTestTableDataTableクラスを自動生成してくれる為、このクラスのインスタンスを生成するだけでOKでした…
自動生成されるクラス名は、「xsdファイルで指定したテーブル名+”DataTable”」になります。

というわけで、以下のコードでデータセットにレコードを追加する事が可能です。

RepTestTableDataTable table = new RepTestTableDataTable();
 
// 印字データを追加
DataRow row;
row = table.NewRow();
row["id"]    = "iten_no1";
row["name"]  = "りんご";
row["price"] = 200;
table.Rows.Add(row);

関連記事

コメントを残す

メールアドレスが公開されることはありません。