PowerTools MultiRow for Windows Forms 8.0J
データソースに接続

データソースを使用してGcComboBoxCellのリストボックスに項目を設定する方法について解説します。Itemsプロパティにコレクションを追加して項目を設定する方法については「コレクションに追加」を参照してください。なお、接続するデータベースは、製品に付属しているSample.mdbを前提にしています。

データベース内のデータをリストボックスに表示する場合は、DataSourceプロパティに該当するデータセットを設定します。

データ ソース構成ウィザードによる接続

プロジェクトにデータソースを追加する

データ ソース構築ウィザードを使用してプロジェクトにデータソースを追加します。

  1. [プロジェクト]または[データ]メニューの[新しいデータ ソースの追加(N)]を選択します。
  2. 「データ ソース構成ウィザード」が起動したら「データベース」を選択して〈次へ〉ボタンをクリックします。
  3. 「データベース モデルの選択」画面で「データセット」を選択して〈次へ〉ボタンをクリックします。
  4. 「データ接続の選択」画面で〈新しい接続〉ボタンをクリックします。
  5. 「接続の追加」ダイアログで、次のように選択し、[接続のテスト]ボタンを押して接続を確認します。
    ・ データ ソース: Microsoft Access データベース ファイル
    ・ データベース ファイル名: Sample.mdb
  6. [OK]ボタンをクリックします。
  7. 「データ接続の選択」画面で[次へ]ボタンをクリックします。
  8. ファイル コピーの確認メッセージボックスで[はい] をクリックします。
  9. 「接続文字列をアプリケーション構成ファイルに保存する」画面で[次へ]ボタンをクリックします。
  10. 「データベース オブジェクトの選択」画面で、「データセット内に指定するデータベース オブジェクト」から「会社」テーブルのチェックをONに設定し、[完了]ボタンをクリックします。        

DataSourceプロパティを設定する

データベース内のデータをGcComboBoxCellに表示する場合は、データベースから作成したDataSetをDataSourceプロパティに設定します。

なお、MultiRowのテンプレートでは、データ連結の設定を行っても、テンプレートのコードにTableAdapterのFillメソッドの処理が自動生成されませんので、Fillメソッドの処理を手動で設定する必要があります。
具体的には、テンプレートのコードに次の処理を追加します。

Public Class Template1

    Public Sub New()
        InitializeComponent()
        InitializeTemplate()
    End Sub

    Private Sub InitializeTemplate()
        Me.会社TableAdapter.Fill(Me.SampleDataSet.会社)
    End Sub
End Class
namespace xxxxxxxx
{
    public sealed partial class Template1 : GrapeCity.Win.MultiRow.Template
    {
        public Template1()
        {
            InitializeComponent();
            InitializeTemplate();
        }

        private void InitializeTemplate()
        {
            this.会社TableAdapter.Fill(this.sampleDataSet.会社);
        }
    }
}
コーディングによる接続

以下は、コーディングでデータベースの内容をGcComboBoxCellに表示する例です。

Imports System.Data.OleDb
Imports GrapeCity.Win.MultiRow
Imports InputManCell = GrapeCity.Win.MultiRow.InputMan

' DataSetオブジェクトを作成します。 
Dim aConn As OleDbConnection = New OleDbConnection( _
    "Provider=Microsoft.Jet.OLEDB.4.0;" _
    + "Data Source= C:\Program Files\MultiRowWin8\Data\Sample.mdb;")
Dim aDA As OleDbDataAdapter = New OleDbDataAdapter( _
    "SELECT * FROM [会社]", aConn)
Dim aDS As DataSet = New DataSet()
aDA.Fill(aDS)


Dim GcComboBoxCell1 = New InputManCell.GcComboBoxCell()
' DataSetオブジェクトを設定します。 
GcComboBoxCell1.DataSource = aDS.Tables(0)

GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {GcComboBoxCell1})
using System.Data.OleDb;
using GrapeCity.Win.MultiRow;
using InputManCell = GrapeCity.Win.MultiRow.InputMan;

// DataSetオブジェクトを作成します。 
OleDbConnection aConn = new OleDbConnection(
    "Provider=Microsoft.Jet.OLEDB.4.0;"
    + "Data Source= C:\\Program Files\\MultiRowWin8\\Data\\Sample.mdb;");
OleDbDataAdapter aDA = new OleDbDataAdapter(
    "SELECT * FROM [会社]", aConn);
DataSet aDS = new DataSet();
aDA.Fill(aDS);

InputManCell.GcComboBoxCell gcComboBoxCell1 = new InputManCell.GcComboBoxCell();
// DataSetオブジェクトを設定します。 
gcComboBoxCell1.DataSource = aDS.Tables[0];

gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcComboBoxCell1 });

特定のデータのみ表示する

特定フィールドのデータのみ表示する場合は、AutoGenerateColumnsプロパティをFalseに設定します。カラムを追加し、バインドするデータのプロパティ名をListColumnクラスのDataPropertyNameプロパティで設定します。
カラムを追加する方法については「カラムの設定」を参照してください。

次のサンプルコードでは、前項で接続したデータソース(会社テーブル)の特定のデータをコンボコントロールのドロップダウンリストに表示する例を示します。

' 自動カラム生成を禁止し、データソースに接続します。
GcComboBoxCell1.AutoGenerateColumns = False
GcComboBoxCell1.DataSource = aDS.Tables(0)

' カラムを作成します。
Dim lc1 As New GrapeCity.Win.MultiRow.InputMan.ListColumn("会社名")
lc1.DataPropertyName = "会社名"
Dim lc2 As New GrapeCity.Win.MultiRow.InputMan.ListColumn("電話番号")
lc2.DataPropertyName = "TEL"

' コンボコントロールにカラムを追加します。
GcComboBoxCell1.ListColumns.Add(lc1)
GcComboBoxCell1.ListColumns.Add(lc2)

GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {GcComboBoxCell1})
                        
// 自動カラム生成を禁止し、データソースに接続します。
gcComboBoxCell1.AutoGenerateColumns = false;
gcComboBoxCell1.DataSource = aDS.Tables[0];

// カラムを作成します。
GrapeCity.Win.MultiRow.InputMan.ListColumn lc1 = new GrapeCity.Win.MultiRow.InputMan.ListColumn("会社名");
lc1.DataPropertyName = "会社名";
GrapeCity.Win.MultiRow.InputMan.ListColumn lc2 = new GrapeCity.Win.MultiRow.InputMan.ListColumn("電話番号");
lc2.DataPropertyName = "TEL";

// コンボコントロールにカラムを追加します。
gcComboBoxCell1.ListColumns.Add(lc1);
gcComboBoxCell1.ListColumns.Add(lc2);

gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcComboBoxCell1 });                            
参照

 

 


© 2008-2015 GrapeCity inc. All rights reserved.