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

注释

DataGridView 控件替换并添加 DataGrid 控件的功能;但是,如果选择,则保留 DataGrid 控件以实现后向兼容性和将来使用。 有关详细信息,请参阅 Windows 窗体 DataGridView 控件与 DataGrid 控件之间的区别

Windows 窗体 DataGrid 控件专门用于显示数据源中的信息。 在运行时,您可以通过调用SetDataBinding方法来绑定控件。 虽然可以从各种数据源显示数据,但最典型的源是数据集和数据视图。

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

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

    如果数据源是基于数据集表的数据集或数据视图,请将代码添加到表单以填充数据集。

    使用的确切代码取决于数据集获取数据的位置。 如果数据集是直接从数据库中填充的,通常会调用数据适配器的 Fill 方法,如以下示例中所示,通过该方法填充一个名为 DsCategories1 的数据集:

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

    如果数据集是从 XML Web 服务填充的,通常会在代码中创建服务的实例,然后调用其中一种方法来返回数据集。 然后,将 XML Web 服务中的数据集合并到本地数据集中。 以下示例演示如何创建一 CategoriesService个名为 XML Web 服务的实例、调用其 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. (可选)将相应的表格样式和列样式添加到网格。 如果没有表格样式,你将看到表格,但格式最小,并且所有列都可见。

另请参阅