方法: ListObject 列をデータにマップするHow to: Map ListObject columns to data

ListObject コントロールを DataTableにバインドするとき、リストの中のすべての列を表示しなくてもよい場合や、データにバインドされていない特定の列が含まれている場合があります。When you bind a ListObject control to a DataTable, you might not want to display all the columns in a list, or you might have certain columns that are not bound to data. ListObject メソッドを呼び出すと、 SetDataBinding に表示する列をマップできます。You can map which columns you want to appear in the ListObject when you call the SetDataBinding method.

適用対象: このトピックの情報は、ドキュメントに適用されます-レベルのプロジェクトおよび VSTO 追加-で Excel 用のプロジェクト。Applies to: The information in this topic applies to document-level projects and VSTO Add-in projects for Excel. 詳細については、「Office アプリケーションおよびプロジェクトの種類で使用できる機能」を参照してください。For more information, see Features available by Office application and project type.

ビデオへのリンク関連のビデオデモについては、操作方法を参照してください。SharePoint リストに接続されている Excel でリストを作成しますかlink to video For a related video demonstration, see How do I: Create a list in Excel that is connected to a SharePoint list?.

マップ列Map columns

データ テーブルをリスト内の列にマップするにはTo map a data table to columns in a list

  1. クラス レベルで DataTable を作成します。Create the DataTable at the class level.

    System.Data.DataTable table = new System.Data.DataTable("Employees");
    
    Dim table As System.Data.DataTable = New System.Data.DataTable("Employees")
    
  2. クラス (ドキュメントレベルのプロジェクトのStartup場合) またはThisAddInクラス (VSTO アドインプロジェクトの場合) のイベントハンドラーにサンプルの列とデータを追加します。 Sheet1Add sample columns and data in the Startup event handler of the Sheet1 class (in a document-level project) or ThisAddIn class (in a VSTO Add-in project).

    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");
    
    table.Columns.Add("Id", GetType(Int32))
    table.Columns.Add("FirstName", GetType(String))
    table.Columns.Add("LastName", GetType(String))
    table.Columns.Add("Title", GetType(String))
    
    table.Rows.Add(1, "Nancy", "Anderson", "Sales Representative")
    table.Rows.Add(2, "Robert", "Brown", "Sales Representative")
    
  3. SetDataBinding メソッドを呼び出し、列名を表示順に渡します。Call the SetDataBinding method and pass in the column names in the order they should appear. リストオブジェクトは新しく作成さDataTableれたにバインドされますが、リストオブジェクト内の列の順序は、 DataTableに表示される順序とは異なります。The list object will be bound to the newly created DataTable, but the order of the columns in the list object will differ from the order they appear in the DataTable.

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

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

列を DataTableにマップするときに空の文字列を渡して、特定の列をデータにバインドしないことも指定できます。When you map columns to a DataTable, you can also specify that certain columns should not be bound to data by passing in an empty string. そのようにすると、データにバインドされない新しい列は ListObject コントロールに追加されます。A new column that is not bound to data is then added to the ListObject control.

ListObject 列をマップするときにマップしない列を指定するにはTo specify an unmapped column when mapping ListObject columns

  1. SetDataBinding メソッドを呼び出し、列名を表示順に渡します。Call the SetDataBinding method and pass in the column names in the order they should appear. 空の文字列を使用して、マップしない列を追加する位置を示します。この場合は、タイトル列と姓の列の間です。Use an empty string to indicate where an unmapped column is added; in this case, between the title column and the last name column.

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

コードのコンパイルCompile the code

このコード例では、このコードがあるワークシートに、 ListObject という名前の既存の list1 があることを前提としています。This code example assumes you have an existing ListObject named list1 on the worksheet in which this code appears.

関連項目See also