GanttView for WPF
データ連結

データ連結は、同期を取りながらデータプロバイダをデータコンシューマーに連結するプロセスを言います。コードをほとんど必要とすることなく、GanttView コントロールを任意の .NET データソースに連結し、プロジェクト関連属性を表示できます。GanttView は、DataTable、DataView、DataSet などの ADO.NET オブジェクトを使用するデータ連結をサポートします。

次に、GanttView コントロールをデータソースに連結する手順を説明します。この例では、連結するデータソースとして Nwind.mdb サンプルデータベースファイルを使用します。

データソースへの連結

GanttView コントロールをデータソースに連結するには、次の手順を実行します。

  1. WPF アプリケーションを(DataBinding という名前で)作成し、MainWindow に C1GanttView コントロールを配置します。
  2. XAML マークアップでコントロールの Name プロパティを「gv」に設定します。
    XAML
    コードのコピー
    <c1:C1GanttView x:Name="gv" Margin="0,37,0,0">
    
  3. プロジェクトにデータソースを追加するには、[表示]→[その他のウィンドウ]→[データソース]をクリックします。
  4. データソース]ウィンドウで、[新しいデータソースの追加]オプションをクリックし、[データの構成ウィザード]ウィンドウを開きます。
  5. データの構成ウィザード]ウィンドウで、データソースの種類として[データベース]を選択し、[次へ]をクリックします。
  6. データベースモデルとして[データセット]を選択し、[次へ]をクリックします。
  7. 新しい接続]をクリックして、データベースファイルに接続します。[接続の追加]ダイアログが表示されます。
  8. 接続の追加]ダイアログで、接続を設定するデータベースファイルを参照します。

    Nwind.mdb データベースファイルは、デフォルトでは、インストールフォルダの次の場所に保存されています。

    C:¥ユーザー¥...¥ドキュメント¥ComponentOne Samples¥Common¥Nwind.mdb

  9. テスト接続]をクリックして、接続に成功するかどうかをテストし、[OK]をクリックします。
  10. 次へ]をクリックしてから、[OK]をクリックして、プロジェクト内にデータベースファイルをコピーします。
  11. テーブル]ドロップダウンリストで、オブジェクトモデルとしてCalendarsPropertiesResourcesTasks の各テーブルを選択し、[完了]をクリックします。

データの保存と取得

データセットにデータを保存したり、GanttView にさまざまなプロジェクト関連属性を表示するためにデータを取得するには、次の手順を実行します。

  1. 次の Import 文を追加します。
    Imports C1.GanttView
    Imports DataBinding.C1NWindDataSetTableAdapters
    
    using C1.GanttView;
    using DataBinding.C1NWindDataSetTableAdapters;
    
  2. NwindDataSet のオブジェクトと、Calendars、Properties、Resources、Tasks の各テーブルのデータアダプタを作成します。
    Private c1NwindDataSet1 As New C1NWindDataSet()
    Private tasksTableAdapter As New TasksTableAdapter()
    Private calendarsTableAdapter As New CalendarsTableAdapter()
    Private resourcesTableAdapter As New ResourcesTableAdapter()
    Private propertiesTableAdapter As New PropertiesTableAdapter()
    
    private C1NWindDataSet c1NwindDataSet1 = new C1NWindDataSet();
    private TasksTableAdapter tasksTableAdapter = new TasksTableAdapter();
    private CalendarsTableAdapter calendarsTableAdapter = new CalendarsTableAdapter();
    private ResourcesTableAdapter resourcesTableAdapter = new ResourcesTableAdapter();
    private PropertiesTableAdapter propertiesTableAdapter = new PropertiesTableAdapter();
    
  3. データアダプタを使用して、テーブルにデータを挿入します。
    Me.tasksTableAdapter.Fill(c1NwindDataSet1.Tasks)
    Me.resourcesTableAdapter.Fill(c1NwindDataSet1.Resources)
    Me.propertiesTableAdapter.Fill(c1NwindDataSet1.Properties)
    Me.calendarsTableAdapter.Fill(c1NwindDataSet1.Calendars)
    
    this.tasksTableAdapter.Fill(c1NwindDataSet1.Tasks);
    this.resourcesTableAdapter.Fill(c1NwindDataSet1.Resources);
    this.propertiesTableAdapter.Fill(c1NwindDataSet1.Properties);
    this.calendarsTableAdapter.Fill(c1NwindDataSet1.Calendars);
    
  4. C1GanttView クラスの Loaded イベントをサブスクライブします。
    AddHandler gv.Loaded, AddressOf gv_Loaded
    
    gv.Loaded+=gv_Loaded;
    
  5. 次のコードを追加して、Loaded イベントで C1GanttViewStorage クラスにさまざまなストレージマッピングを設定します。
    Private Sub gv_Loaded(sender As Object, e As RoutedEventArgs)
    
        Dim storage As C1GanttViewStorage = gv.DataStorage
    
        storage.CalendarStorage.Mappings.CalendarID.MappingName = "CalendarID"
        storage.CalendarStorage.Mappings.Data.MappingName = "Data"
        storage.CalendarStorage.Mappings.IdMapping.MappingName = "Id"
        storage.CalendarStorage.Mappings.Name.MappingName = "Name"
        storage.CalendarStorage.DataMember = "Calendars"
        storage.CalendarStorage.DataSource = Me.c1NwindDataSet1
    
        storage.PropertyStorage.Key.MappingName = "Key"
        storage.PropertyStorage.Value.MappingName = "Value"
        storage.PropertyStorage.DataMember = "Properties"
        storage.PropertyStorage.DataSource = Me.c1NwindDataSet1
    
        storage.ResourceStorage.Mappings.Cost.MappingName = "Cost"
        storage.ResourceStorage.Mappings.IdMapping.MappingName = "Id"
        storage.ResourceStorage.Mappings.Name.MappingName = "Name"
        storage.ResourceStorage.Mappings.Notes.MappingName = "Notes"
        storage.ResourceStorage.Mappings.ResourceID.MappingName = "ResourceID"
        storage.ResourceStorage.Mappings.ResourceType.MappingName = "ResourceType"
        storage.ResourceStorage.Mappings.UnitOfMeasure.MappingName = "UnitOfMeasure"
        storage.ResourceStorage.DataMember = "Resources"
        storage.ResourceStorage.DataSource = Me.c1NwindDataSet1
    
        storage.TasksStorage.Mappings.CalendarID.MappingName = "CalendarID"
        storage.TasksStorage.Mappings.ConstraintDate.MappingName = "ConstraintDate"
        storage.TasksStorage.Mappings.ConstraintType.MappingName = "ConstraintType"
        storage.TasksStorage.Mappings.CustomFields.MappingName = "CustomFields"
        storage.TasksStorage.Mappings.Deadline.MappingName = "Deadline"
        storage.TasksStorage.Mappings.Duration.MappingName = "Duration"
        storage.TasksStorage.Mappings.DurationUnits.MappingName = "DurationUnits"
        storage.TasksStorage.Mappings.Finish.MappingName = "Finish"
        storage.TasksStorage.Mappings.HideBar.MappingName = "HideBar"
        storage.TasksStorage.Mappings.IdMapping.MappingName = "Id"
        storage.TasksStorage.Mappings.Initialized.MappingName = "Initialized"
        storage.TasksStorage.Mappings.Mode.MappingName = "Mode"
        storage.TasksStorage.Mappings.Name.MappingName = "Name"
        storage.TasksStorage.Mappings.NextID.MappingName = "NextID"
        storage.TasksStorage.Mappings.Notes.MappingName = "Notes"
        storage.TasksStorage.Mappings.Parts.MappingName = "Parts"
        storage.TasksStorage.Mappings.PercentComplete.MappingName = "PercentComplete"
        storage.TasksStorage.Mappings.Predecessors.MappingName = "Predecessors"
        storage.TasksStorage.Mappings.Resources.MappingName = "Resources"
        storage.TasksStorage.Mappings.Start.MappingName = "Start"
        storage.TasksStorage.Mappings.TaskID.MappingName = "TaskID"
        storage.TasksStorage.DataMember = "Tasks"
        storage.TasksStorage.DataSource = Me.c1NwindDataSet1
    
    End Sub
    
    private void gv_Loaded(object sender, RoutedEventArgs e)
    {
         C1GanttViewStorage storage = gv.DataStorage;
        storage.CalendarStorage.Mappings.CalendarID.MappingName = "CalendarID";
        storage.CalendarStorage.Mappings.CalendarID.MappingName = "CalendarID";
        storage.CalendarStorage.Mappings.Data.MappingName = "Data";
        storage.CalendarStorage.Mappings.IdMapping.MappingName = "Id";
        storage.CalendarStorage.Mappings.Name.MappingName = "Name";
        storage.CalendarStorage.DataMember = "Calendars";
        storage.CalendarStorage.DataSource = this.c1NwindDataSet1;
    
        storage.PropertyStorage.Key.MappingName = "Key";
        storage.PropertyStorage.Value.MappingName = "Value";
        storage.PropertyStorage.DataMember = "Properties";
        storage.PropertyStorage.DataSource = this.c1NwindDataSet1;
    
        storage.ResourceStorage.Mappings.Cost.MappingName = "Cost";
        storage.ResourceStorage.Mappings.IdMapping.MappingName = "Id";
        storage.ResourceStorage.Mappings.Name.MappingName = "Name";
        storage.ResourceStorage.Mappings.Notes.MappingName = "Notes";
        storage.ResourceStorage.Mappings.ResourceID.MappingName = "ResourceID";
        storage.ResourceStorage.Mappings.ResourceType.MappingName = "ResourceType";
        storage.ResourceStorage.Mappings.UnitOfMeasure.MappingName = "UnitOfMeasure";
        storage.ResourceStorage.DataMember = "Resources";
        storage.ResourceStorage.DataSource = this.c1NwindDataSet1;
    
        storage.TasksStorage.Mappings.CalendarID.MappingName = "CalendarID";
        storage.TasksStorage.Mappings.ConstraintDate.MappingName = "ConstraintDate";
        storage.TasksStorage.Mappings.ConstraintType.MappingName = "ConstraintType";
        storage.TasksStorage.Mappings.CustomFields.MappingName = "CustomFields";
        storage.TasksStorage.Mappings.Deadline.MappingName = "Deadline";
        storage.TasksStorage.Mappings.Duration.MappingName = "Duration";
        storage.TasksStorage.Mappings.DurationUnits.MappingName = "DurationUnits";
        storage.TasksStorage.Mappings.Finish.MappingName = "Finish";
        storage.TasksStorage.Mappings.HideBar.MappingName = "HideBar";
        storage.TasksStorage.Mappings.IdMapping.MappingName = "Id";
        storage.TasksStorage.Mappings.Initialized.MappingName = "Initialized";
        storage.TasksStorage.Mappings.Mode.MappingName = "Mode";
        storage.TasksStorage.Mappings.Name.MappingName = "Name";
        storage.TasksStorage.Mappings.NextID.MappingName = "NextID";
        storage.TasksStorage.Mappings.Notes.MappingName = "Notes";
        storage.TasksStorage.Mappings.Parts.MappingName = "Parts";
        storage.TasksStorage.Mappings.PercentComplete.MappingName = "PercentComplete";
        storage.TasksStorage.Mappings.Predecessors.MappingName = "Predecessors";
        storage.TasksStorage.Mappings.Resources.MappingName = "Resources";
        storage.TasksStorage.Mappings.Start.MappingName = "Start";
        storage.TasksStorage.Mappings.TaskID.MappingName = "TaskID";
        storage.TasksStorage.DataMember = "Tasks";
        storage.TasksStorage.DataSource = this.c1NwindDataSet1;
    }
    
  6. アプリケーションを実行し、GanttView が NwindDataSet 内のテーブルに連結されたことを確認します。