Copyright © GrapeCity inc. All rights reserved.
True DBGrid for WinForms
チュートリアル4: コードや他の連結コントロールと対話する
チュートリアル > チュートリアル4: コードや他の連結コントロールと対話する

このチュートリアルでは、True DBGrid が、グリッドの連結先と同じ DataSet を操作する Visual Basic コードや他の連結コントロールと対話するしくみを学びます。

以下の手順を実行します。

  1. 新しい .NET プロジェクトを開始します。
  2. 次の図のように、フォーム( Form1 )にコントロールを配置します。配置するコントロールは
    • C1TrueDBGrid コントロール( C1TrueDBGrid1 )
    • ListBox コントロール( ListBox1 )
    • 3つのテキストコントロール( TextBox1〜3 )
    • 7つのボタン( Button1〜7 )
    • および4つのラベル( Label1〜4 )です。

    次の図のように、ラベルとボタンのテキストプロパティを設定します。
  3. C1TrueDBGrid タスクメニューで、〈データソースの選択〉ドロップダウン矢印をクリックし、ドロップダウンボックスから[プロジェクトのデータソースの追加]リンクを選択します。 [データソース構成ウィザード]が表示されます。[データソースの種類の選択]ページ上で選択されているデフォルト設定である[データベース]をそのままにして、〈次へ〉をクリックします。〈新しい接続〉ボタンをクリックし、新しい接続を作成するか、ドロップダウンリストから1つ選択します。[データベースオブジェクトの選択]ページで、Customers テーブルを選択し、すべてのフィールドを含めます。[データセット名]ボックスに DsCustomers と入力し、〈完了〉をクリックしてウィザードを終了します。新しいデータソースをプロジェクトに追加する方法については、「手順 2:DataSet への C1TrueDBGrid の連結」を参照してください。
  4. Visual Studio は、Form_Load イベントに次のコードを追加します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Me.CustomersTableAdapter.Fill(Me.DsCustomers.Customers)
    

    C# コードの書き方

    C#
    コードのコピー
    this.CustomersTableAdapter.Fill(this.DsCustomers.Customers);
    
  5. 上の図の右上にある4つのボタン(Button4、5、6、7)に、それぞれ次のコードを追加します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Private Sub btnFirst_Click(ByVal sender As System.Object,  ByVal e As System.EventArgs) Handles btnFirst.Click
     
        ' カレントレコードをグリッドの先頭に移動します。
        Me.C1TrueDBGrid1.MoveFirst()
    End Sub
     
    Private Sub btnNext_Click(ByVal sender As System.Object,  ByVal e As System.EventArgs) Handles btnNext.Click
     
        ' カレントレコードをグリッドの次の行に移動します。
        Me.C1TrueDBGrid1.MoveNext()
    End Sub
     
    Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click
     
        ' カレントレコードをグリッドの前の行に移動します。
        Me.C1TrueDBGrid1.MovePrevious()
    End Sub
     
    Private Sub btnLast_Click(ByVal sender As System.Object,  ByVal e As System.EventArgs) Handles btnLast.Click
     
        ' カレントレコードをグリッドの末尾に移動します。
        Me.C1TrueDBGrid1.MoveLast()
    End Sub
    

    C# コードの書き方

    C#
    コードのコピー
    private void btnFirst_Click(System.object sender,  System.EventArgs e)  
    {
        // カレントレコードをグリッドの先頭に移動します。
        this.c1TrueDBGrid1.MoveFirst();
    }
     
    private void btnNext_Click(System.object sender,  System.EventArgs e)  
    {
        // カレントレコードをグリッドの次の行に移動します。
        this.c1TrueDBGrid1.MoveNext();
    }
     
    private void btnPrevious_Click(System.object sender,  System.EventArgs e)  
    {
        // カレントレコードをグリッドの前の行に移動します。
        this.c1TrueDBGrid1.MovePrevious();
    }
     
    private void btnLast_Click(System.object sender,  System.EventArgs e)  
    {
        // カレントレコードをグリッドの末尾に移動します。
        this.c1TrueDBGrid1.MoveLast();
    }
    
  6. 上の図の右上にある3つのボタン(Button1、2、3)に、それぞれ次のコードを追加します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
     
        ' グリッドを更新し、データベースに変更データを保存します。
        Me.C1TrueDBGrid1.Delete()
        Call UpdateCustomers()
    End Sub
     
    Private Sub BtnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
     
        ' カレントレコードを削除し、データベースに変更データを保存します。 
         Me.C1TrueDBGrid1.UpdateData()
         Call UpdateCustomers()
    End Sub
     
    Private Sub BtnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
     
        
        Me.C1TrueDBGrid1.MoveLast()
     
        ' 
        Me.C1TrueDBGrid1.Row = Me.C1TrueDBGrid1.Row + 1
        Me.C1TrueDBGrid1.Select()
    End Sub
    

    C# コードの書き方

    C#
    コードのコピー
    private void btnDelete_Click(System.object sender,  System.EventArgs e)  
    {
        // グリッドを更新し、データベースに変更データを保存します。
        this.c1TrueDBGrid1.Delete();
        UpdateCustomers();
    }
     
    private void BtnUpdate_Click(System.object sender,  System.EventArgs e)  
    {
        // カレントレコードを削除し、データベースに変更データを保存します。 
        this.c1TrueDBGrid1.UpdateData();
        UpdateCustomers();
    }
     
    private void BtnAdd_Click(System.object sender,  System.EventArgs e) 
    {
        // 
    
        this.c1TrueDBGrid1.MoveLast();
     
        // Move to the "addnew row", and set focus to the grid.
        this.c1TrueDBGrid1.Row = this.c1TrueDBGrid1.Row + 1;
        this.c1TrueDBGrid1.Select();
    }
    
  7. UpdateCustomers サブルーチンを追加します。このコードでは、一時的なデータテーブルからデータセットに情報を戻しています。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Private Sub UpdateCustomers()
        Me.CustomersTableAdapter.Connection.Open()
        Dim UpdatedRows As System.Data.DataSet
        Dim InsertedRows As System.Data.DataSet
        Dim DeletedRows As System.Data.DataSet
     
        ' 前回データを保存した以降にデータセットに対して行われたすべての変更を取得します。
        UpdatedRows = Me.DsCustomers.GetChanges(DataRowState.Modified)
        InsertedRows = Me.DsCustomers.GetChanges(DataRowState.Added)
        DeletedRows = Me.DsCustomers.GetChanges(DataRowState.Deleted)
     
        Try
     
        ' 変更データを保存します。
            If Not UpdatedRows Is Nothing Then Me.CustomersTableAdapter.Update(UpdatedRows)
            If Not InsertedRows Is Nothing Then Me.CustomersTableAdapter.Update(InsertedRows)
            If Not DeletedRows Is Nothing Then Me.CustomersTableAdapter.Update(DeletedRows)
        Catch eUpdate As System.Exception
            MessageBox.Show ("Caught exception: " & eUpdate.Message)
        End Try
     
        Me.CustomersTableAdapter.Connection.Close()
    End Sub
    

    C# コードの書き方

    C#
    コードのコピー
    private void UpdateCustomers() 
    {
        this.CustomersTableAdapter.Connection.Open();
        System.Data.DataSet UpdatedRows;
        System.Data.DataSet InsertedRows;
        System.Data.DataSet DeletedRows;
     
        //前回データを保存した以降にデータセットに対して行われたすべての変更を取得します。
        UpdatedRows = this.DsCustomers.GetChanges(DataRowState.Modified);
        InsertedRows = this.DsCustomers.GetChanges(DataRowState.Added);
        DeletedRows = this.DsCustomers.GetChanges(DataRowState.Deleted);
     
        try 
        {
            // 変更データを保存します。
            if (! UpdatedRows == null ) 
                this.CustomersTableAdapter.Update(UpdatedRows)
            if (! InsertedRows == null ) 
                this.CustomersTableAdapter.Update(InsertedRows)
            if (! DeletedRows == null ) 
                this.CustomersTableAdapter.Update(DeletedRows)
        }
        catch (System.Exception eUpdate) 
        { 
            MessageBox.Show ("Caught exception: " + eUpdate.Message);
        }
        this.CustomersTableAdapter.Connection.Close();
    }
    
  8. .NET のデザイナに戻り、ListBox1 コントロールをクリックします。Visual Studio のプロパティウィンドウで、DataSource プロパティを customersBindingSource に、DisplayMember プロパティをLastNameに設定します。
  9. フォームの最初のテキストボックスTextBox1をクリックします。Visual Studio のプロパティウィンドウで、DataBindings オブジェクトを展開します。DataBindings オブジェクトの下の Text プロパティを customersBindingSource - FirstNameに設定します。同様に、残りの6つのテキストボックス TextBox で、対応する DataBindings オブジェクトの下の Text プロパティを設定します。
  10. 最後に、Visual Studio のプロパティウィンドウで、、C1TrueDBGridAllowAddNew, AllowDelete, and AllowUpdate の各プロパティを True に設定します。

プログラムを実行し、次の動作を確認します。

これでチュートリアル 4 は終了です。