MESCIUS SPREAD for Windows Forms 17.0J サンプルコード集
連結する

データベースとの連結は最も利用される機能です。連結のためにはFpSpreadクラスのDataSourceプロパティに対し、作成したデータセットを設定するだけです。(標準グリッドコントロールと同様) なお、連結時にはデータセットの各フィールドに基づき、セル型や列幅などが自動的に設定されます。

【実行例】 データセットとの連結

データ連結

  • 便宜上、当サンプルではデータセットを手動で作成しています。(DataSetの他にもDataTableやDataViewとの連結が可能です) SQL ServerやOracle等との接続に関する一般的な手法については各種参考文献をご参照ください。
  • 最終的なデータベースへの反映はDataAdapterのUpdateメソッド呼び出し等の対応が必要となります。また、テーブルの排他制御等についてもADO.NETの仕様に基づき適切に行う必要があります。詳細についてはMSDNライブラリをご参照ください。
  • DataRowのRowStateはセルデータの変更だけでは更新(Modified)されず、標準のDataGridViewコントロールと同様、アクティブセルが他の行に移動したタイミングで更新されます。
  • データ連結時には関連データベースフィールドのデータに基づき、列のサイズ(幅)が自動的に設定されます。また、 列のセル型列ヘッダのテキストも自動的に変更されます。

    つまり、連結によってあらかじめデザイナにて設定された各種スタイル情報は全て無効となることに注意が必要です。このような場合は、以下の各プロパティ(SheetViewクラスメンバ)を必要に応じてFalse(デフォルトはTrue)に変更するか、連結後にコーディングによって各スタイル情報を設定する等の対応も必要となります。

    [DataAutoSizeColumns] : フィールドのデータに基づき、列のサイズを自動的に変更します
    [DataAutoCellTypes] : 各列のセル型を自動的に設定します
    [DataAutoHeadings] : 列ヘッダのテキストにするデータフィールド名を自動的に割り当てます

    また、階層表示における子階層(子ビュー)も同様の仕様となるため、この場合も必要に応じて上記変更を行う必要があります。具体的には子ビュー生成のタイミングで発生するChildViewCreatedイベントを実装し、ChildViewCreatedEventArgsクラスである引数eのSheetViewに対して変更を行います。
  • 1レコードを複数行で表示する機能はありません。

 private void Form1_Load(object sender, System.EventArgs e)
 {

   //データセットを手動で作成します
   DataTable DT = new DataTable();
   DataSet DS = new DataSet();
   DT = DS.Tables.Add("SampleTable");
   DT.Columns.AddRange(new DataColumn[] {
               new DataColumn("ID", Type.GetType("System.Int32")),
               new DataColumn("Text", Type.GetType("System.String")),
               new DataColumn("Check", Type.GetType("System.Boolean"))
               });

   DT.Rows.Add(new object[] {10, "Text-10", true});
   DT.Rows.Add(new object[] {20, "Text-20", false});
   DT.Rows.Add(new object[] {30, "Text-30", false});
   DT.Rows.Add(new object[] {40, "Text-40", true});
   DT.Rows.Add(new object[] {50, "text-50", true});

   //データセットを接続します
   fpSpread1.DataSource = DS;
 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

   'データセットを作成します
   Dim DT As New DataTable
   Dim DS As New DataSet
   DT = DS.Tables.Add("SampleTable")
   DT.Columns.AddRange(New DataColumn() { _
               New DataColumn("ID", Type.GetType("System.Int32")), _
               New DataColumn("Text", Type.GetType("System.String")), _
               New DataColumn("Check", Type.GetType("System.Boolean")) _
               })

   DT.Rows.Add(New Object() {10, "Text-10", True})
   DT.Rows.Add(New Object() {20, "Text-20", False})
   DT.Rows.Add(New Object() {30, "Text-30", False})
   DT.Rows.Add(New Object() {40, "Text-40", True})
   DT.Rows.Add(New Object() {50, "Text-50", True})

   'データセットを接続します
   FpSpread1.DataSource = DS

 End Sub

 

 


© MESCIUS inc. All rights reserved.