MESCIUS MultiRow for Windows Forms 12.0J
データベースとの連結

MultiRowは、.NET Frameworkの標準コントロールと同じようにADO.NETを使用してデータベースに接続できます。
データベースの接続
SQL Serverのデータソースをプロジェクトに登録します。この作業はMultiRowに依存しません。
  1. Visual Studioを起動して、新規にWindows Application プロジェクトを作成する。
  2. Visual Studioの[プロジェクト]−[新しいデfータソースの追加]メニューをクリックする。
  3. 表示された「データ ソース構成ウィザード」の画面で、「データベース」を選択し、[次へ]をクリックする。
  4. 表示された「データ接続の選択」画面で、[新しい接続]をクリックし次の構成で接続を追加する。
    • データソース:Microsoft SQL Server (SqlClient)
    • サーバー名(例):(local)\SQLEXPRESS
    • データベースの選択または入力:AdventureWorks2012
    Web サイト チュートリアル: AdventureWorks データベースのインストール」を参考にサンプルデータベースをダウンロードしてください。
  5. 接続を追加した後、[次へ]をクリックする。
  6. 「接続文字列をアプリケーション構成ファイルに保存する」画面で[次へ]をクリックする。
  7. 「データベース オブジェクトの選択」画面で、次の2つのテーブルのチェックをオンにする。
    • Employee
    • Person
  8. [完了]をクリックする。
  9. Visual Studioの「データソース」ウィンドウに「Employee」と「Person」が追加されていることを確認する。
テンプレートの設計
MultiRowのテンプレートを作成し、テーブルのフィールドを割り当てます。

  1. Visual Studioの[プロジェクト]−[新しい項目の追加]メニューをクリックする。
  2. 「新しい項目の追加」画面で、「MultiRow 12.0 テンプレート」を選択し、[追加]ボタンをクリックする。
  3. 「Template1.cs デザイン」画面が表示されることを確認する。
  4. 次の構成で列ヘッダを作成する。
    作成する列ヘッダ
    1. 「ツールボックス」ウィンドウから、ColumnHeaderCellをColumnHeaderSection1にドラッグする(4回繰り返す)。
    2. ドラッグしたセルのValueプロパティに「ID」「LastName」「PersonType」「JobTitle」を設定する。
    3. columnHeaderSection1の高さをセルの高さに合わせる。
  5. 次の構成で行を作成する。
    作成する行
    1. 「ツールボックス」ウィンドウから、RowHeaderCellをrow にドラッグする。
    2. 「ツールボックス」ウィンドウから、TextBoxCellをrowにドラッグする(2回繰り返す)。
    3. 「ツールボックス」ウィンドウから、ComboBoxCellをrowにドラッグする。
    4. ComboBoxCellのDropDownStyleプロパティにDropDownを設定する。
    5. ドラッグしたセルのDataFieldプロパティに「BusinessEntityID」「LastName」「PersonType」を設定する。(ComboBoxCellのDataFieldプロパティは空のまま)
      行のセルに対するデータフィールドの割り当て
    6. rowの高さをセルの高さに合わせる。
  6. テンプレートの幅をセルの幅に合わせる。
  7. プロジェクトを保存する。
グリッドへの接続
フォームにGcMultiRowコントロールを配置して、データソースとテンプレートをグリッドに割り当てます。

  1. フォーム(Form1)のデザイン画面を開く。
  2. 「データソース」ウィンドウから「Person」テーブルを選択し、ドロップダウンリストから「カスタマイズ...」をクリックする。
  3. 表示された「オプション」画面で「関連付けられたコントロール」の「GcMultiRow」のチェックをオンにする。
  4. [OK]ボタンをクリックしてダイアログを閉じる。
  5. 「データソース」ウィンドウから「Person」テーブルを選択し、ドロップダウンリストから「GcMultiRow」をクリックする。
    ドロップダウンリストから「GcMultiRow」をクリックする
  6. 「Person」テーブルをフォーム(Form1)のデザイン画面にドラッグ&ドロップする。
  7. フォームにBindingNavigator(personBindingNavigator)とGcMultiRow(personGcMultiRow)が配置されることを確認する。
    ordersBindingNavigator と ordersGcMultiRow
  8. Visual Studioの[ビルド]−[ソリューションのビルド]メニューをクリックする。
  9. 「ツールボックス」ウィンドウから「Template1」をフォームにドラッグ&ドロップする。
    Template1 クラスのインスタンス
  10. フォーム上のpersonGcMultiRowコントロールを選択し、スマートタグから「テンプレートの選択」で「template11」を選択する。
    GcMultiRow コントロールのスマートタグ

以上でグリッドへのテンプレートとデータソースの割り当ては完了です。プロジェクトを実行すると、データソースの値がグリッドに読み込まれます。

プロジェクトの実行結果
ルックアップ列の設定
PersonテーブルのBusinessEntityID列の値は、EmployeeテーブルのBusinessEntityID列の値と同じです。このBusinessEntityID列の値を元に、EmployeeテーブルのJobTitle列の値を列挙します。

  1. 「データソース」ウィンドウから「Employee」テーブルを選択し、フォーム(Form1)のデザイン画面にドラッグ&ドロップする。
  2. フォーム上に配置されるDataGirdViewコントロールを削除する。
  3. フォームのコードエディタを開き、次のコードを貼り付ける。
    Imports GrapeCity.Win.MultiRow
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    
        Dim myTemplate As New Template1()    Dim ComboBoxCell = DirectCast(myTemplate.Row("ComboBoxCell1"), ComboBoxCell)    ComboBoxCell.DataSource = Me.EmployeeBindingSource    ComboBoxCell.DisplayMember = "JobTitle"    ComboBoxCell.ValueMember = "BusinessEntityID"    ComboBoxCell.DataField = "BusinessEntityID"    Me.PersonGcMultiRow.Template = myTemplate
    
     
    
        'TODO: このコード行はデータを 'AdventureWorks2012DataSet.Employee' テーブルに読み込みます。必要に応じて移動、または削除をしてください。    Me.EmployeeTableAdapter.Fill(Me.AdventureWorks2012DataSet.Employee)    'TODO: このコード行はデータを 'AdventureWorks2012DataSet.Person' テーブルに読み込みます。必要に応じて移動、または削除をしてください。    Me.PersonTableAdapter.Fill(Me.AdventureWorks2012DataSet.Person)End Sub
    using GrapeCity.Win.MultiRow;
    
    private void Form1_Load(object sender, EventArgs e)
    {
    
        Template1 myTemplate = new Template1();    ComboBoxCell comboBoxCell = myTemplate.Row["comboBoxCell1"] as ComboBoxCell;    comboBoxCell.DataSource = this.employeeBindingSource;    comboBoxCell.DisplayMember = "JobTitle";    comboBoxCell.ValueMember = "BusinessEntityID";    comboBoxCell.DataField = "BusinessEntityID";    this.personGcMultiRow.Template = myTemplate;
    
        // TODO: このコード行はデータを 'adventureWorks2012DataSet.Employee' テーブルに読み込みます。必要に応じて移動、または削除をしてください。    this.employeeTableAdapter.Fill(this.adventureWorks2012DataSet.Employee);    // TODO: このコード行はデータを 'adventureWorks2012DataSet.Person' テーブルに読み込みます。必要に応じて移動、または削除をしてください。    this.personTableAdapter.Fill(this.adventureWorks2012DataSet.Person);}

プロジェクトを実行すると、ComboBoxCellにJobTitle列の値が列挙されることを確認できます。

   
関連トピック

 

 


© MESCIUS inc. All rights reserved.