ListObject 列をデータにマップする

ListObject コントロールを DataTableにバインドするとき、リストの中のすべての列を表示しなくてもよい場合や、データにバインドされていない特定の列が含まれている場合があります。 ListObject メソッドを呼び出すと、 SetDataBinding に表示する列をマップできます。

適用対象: このトピックの情報は、Excel のドキュメント レベルのプロジェクトおよび VSTO アドインのプロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

列のマッピング

データ テーブルをリスト内の列にマップするには

  1. クラス レベルで DataTable を作成します。

    System.Data.DataTable table = new System.Data.DataTable("Employees");
    
  2. Startup クラス (ドキュメント レベル プロジェクトの場合) または Sheet1 クラス (VSTO アドイン プロジェクトの場合) の ThisAddIn イベント ハンドラーにサンプルの列とデータを追加します。

    table.Columns.Add("Id", typeof(int));
    table.Columns.Add("FirstName", typeof(string));
    table.Columns.Add("LastName", typeof(string));
    table.Columns.Add("Title", typeof(string));
    
    table.Rows.Add(1, "Nancy", "Anderson", "Sales Representative");
    table.Rows.Add(2, "Robert", "Brown", "Sales Representative");
    
  3. SetDataBinding メソッドを呼び出し、表示する順序で列名を渡します。 リストのオブジェクトは新たに作成された DataTable にバインドされますが、リスト オブジェクト内の列の順序は、DataTable に表示される順序とは異なります。

    this.list1.AutoSetDataBoundColumnHeaders = true;
    this.list1.SetDataBinding(table, "", "Title", "LastName", "FirstName");
    

マップされていない列の指定

列を DataTableにマップするときに空の文字列を渡して、特定の列をデータにバインドしないことも指定できます。 そのようにすると、データにバインドされない新しい列は ListObject コントロールに追加されます。

ListObject 列をマップするときにマップしない列を指定するには

  1. SetDataBinding メソッドを呼び出し、表示する順序で列名を渡します。 空の文字列を使用して、マップしない列を追加する位置を示します。この場合は、タイトル列と姓の列の間です。

    this.list1.SetDataBinding(table, "", "Title", "", "LastName", "FirstName");
    

コードのコンパイル

このコード例では、このコードがあるワークシートに、 ListObject という名前の既存の list1 があることを前提としています。