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

更新:2007 年 11 月

说明:

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

Windows 窗体 DataGrid 控件是专为显示来自数据源的信息而设计的。通过调用 SetDataBinding 方法可以在运行时绑定控件。虽然可以显示来自各种数据源的数据,但最常见的数据源是数据集和数据视图。

以编程方式数据绑定 DataGrid 控件

  1. 编写代码来填充数据集。

    如果数据源是数据集或基于数据集表的数据视图,请向窗体添加代码来填充数据集。

    所使用的确切代码取决于数据集从何处获取数据。如果要从数据库中直接填充数据集,通常可以调用数据适配器的 Fill 方法,如下面的示例所示(它填充名为 DsCategories1 的数据集):

    sqlDataAdapter1.Fill(DsCategories1)
    
    sqlDataAdapter1.Fill(DsCategories1);
    
    sqlDataAdapter1->Fill(dsCategories1);
    

    如果要从 XML Web services 填充数据集,通常可以在代码中创建该服务的实例,然后调用其方法之一来返回数据集。然后将 XML Web services 中的数据集并入本地的数据集。下面的示例演示如何创建名为 CategoriesService 的 XML Web services 的实例,如何调用它的 GetCategories 方法,以及如何将生成的结果数据集合并到名为 DsCategories1 的本地数据集:

    Dim ws As New MyProject.localhost.CategoriesService()
    ws.Credentials = System.Net.CredentialCache.DefaultCredentials
    DsCategories1.Merge(ws.GetCategories())
    
    MyProject.localhost.CategoriesService ws = new MyProject.localhost.CategoriesService();
    ws.Credentials = System.Net.CredentialCache.DefaultCredentials;
    DsCategories1.Merge(ws.GetCategories());
    
    MyProject::localhost::CategoriesService^ ws = 
       new MyProject::localhost::CategoriesService();
    ws->Credentials = System::Net::CredentialCache::DefaultCredentials;
    dsCategories1->Merge(ws->GetCategories());
    
  2. 调用 DataGrid 控件的 SetDataBinding 方法,向其传递数据源和一个数据成员。如果不需要显式传递一个数据成员,请传递一个空字符串。

    说明:

    如果是第一次绑定网格,可以设置控件的 DataSourceDataMember 属性。但是,这些属性一经设置,便无法进行重置。因此,建议您始终使用 SetDataBinding 方法。

    下面的示例演示如何以编程方式绑定到 DsCustomers1 数据集中的 Customers 表:

    DataGrid1.SetDataBinding(DsCustomers1, "Customers")
    
    DataGrid1.SetDataBinding(DsCustomers1, "Customers");
    
    dataGrid1->SetDataBinding(dsCustomers1, "Customers");
    

    如果 Customers 表是数据集中唯一的表,也可以用下面的方法绑定网格:

    DataGrid1.SetDataBinding(DsCustomers1, "")
    
    DataGrid1.SetDataBinding(DsCustomers1, "");
    
    dataGrid1->SetDataBinding(dsCustomers1, "");
    
  3. (可选)将适当的表样式和列样式添加到网格中。如果没有表样式,您将看见该表,但其格式设置很少,且所有列均可见。

请参见

任务

如何:向 Windows 窗体 DataGrid 控件添加表和列

参考

DataGrid 控件概述(Windows 窗体)

其他资源

DataGrid 控件(Windows 窗体)

Windows 窗体数据绑定