如何:使用 Windows 窗体 DataGrid 控件创建主/从列表

更新:2007 年 11 月

说明:

DataGridView 控件替换了 DataGrid 控件并添加了功能;但是也可选择保留 DataGrid 控件以备向后兼容和将来使用。有关更多信息,请参见 Windows 窗体 DataGridView 控件和 DataGrid 控件之间的区别

如果 DataSet 包含一系列相关表,则可以使用两个 DataGrid 控件以主/从格式显示数据。一个 DataGrid 被指定为主网格,而另一个被指定为详细信息网格。当在主列表中选择某项时,所有相关的子项都显示在详细信息列表中。例如,如果 DataSet 包含 Customers 表和相关的 Orders 表,则应将 Customers 表指定为主网格,而将 Orders 表指定为详细信息网格。当从主网格中选择某个客户时,Orders 表中与该客户关联的所有订单都将显示在详细信息网格中。

以编程方式设置主/从关系

  1. 新建两个 DataGrid 控件并设置它们的属性。

  2. 向数据集添加表。

  3. 声明一个类型为 DataRelation 的变量来表示您要创建的关系。

  4. 通过指定关系的名称和指定表、列以及将关联这两个表的项来实例化关系。

  5. 将此关系添加到 DataSet 对象的 Relations 集合中。

  6. 使用 DataGridSetDataBinding 方法将每个网格绑定到 DataSet

    下面的示例演示如何在以前生成的 DataSet (ds) 中设置 Customers 表与 Orders 表之间的主/从关系。

    Dim myDataRelation As DataRelation
    myDataRelation = New DataRelation _
       ("CustOrd", ds.Tables("Customers").Columns("CustomerID"), _
       ds.Tables("Orders").Columns("CustomerID"))
    ' Add the relation to the DataSet.
    ds.Relations.Add(myDataRelation)
    GridOrders.SetDataBinding(ds, "Customers")
    GridDetails.SetDataBinding(ds, "Customers.CustOrd")
    
    DataRelation myDataRelation;
    myDataRelation = new DataRelation("CustOrd", ds.Tables["Customers"].Columns["CustomerID"], ds.Tables["Orders"].Columns["CustomerID"]);
    // Add the relation to the DataSet.
    ds.Relations.Add(myDataRelation);
    GridOrders.SetDataBinding(ds,"Customers");
    GridDetails.SetDataBinding(ds,"Customers.CustOrd");
    
    DataRelation^ myDataRelation;
    myDataRelation = gcnew DataRelation("CustOrd",
       ds->Tables["Customers"]->Columns["CustomerID"],
       ds->Tables["Orders"]->Columns["CustomerID"]);
    // Add the relation to the DataSet.
    ds->Relations->Add(myDataRelation);
    GridOrders->SetDataBinding(ds, "Customers");
    GridDetails->SetDataBinding(ds, "Customers.CustOrd");
    

请参见

任务

如何:将 Windows 窗体 DataGrid 控件绑定到数据源

参考

DataGrid 控件概述(Windows 窗体)

其他资源

DataGrid 控件(Windows 窗体)