如何:将 Windows 窗体 DataGrid 控件绑定到数据源
提示
DataGridView 控件取代了 DataGrid 控件并添加了功能;但是,可以选择保留 DataGrid 控件以实现向后兼容并供将来使用。 有关更多信息,请参见 Windows 窗体 DataGridView 控件和 DataGrid 控件之间的区别。
Windows 窗体 DataGrid 控件是专为显示来自数据源的信息而设计的。 通过调用 SetDataBinding 方法可以在运行时绑定控件。 虽然可以显示来自各种数据源的数据,但最常见的数据源是数据集和数据视图。
以编程方式数据绑定 DataGrid 控件
编写代码来填充数据集。
如果数据源是数据集或基于数据集表的数据视图,请向窗体添加代码来填充数据集。
所使用的确切代码取决于数据集从何处获取数据。 如果要从数据库中直接填充数据集,通常可以调用数据适配器的 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());
调用 DataGrid 控件的 SetDataBinding 方法,向其传递数据源和一个数据成员。 如果不需要显式传递一个数据成员,请传递一个空字符串。
提示
如果是第一次绑定网格,可以设置控件的 DataSource 和 DataMember 属性。 但是,这些属性一经设置,便无法进行重置。 因此,建议您始终使用 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, "");
(可选)将适当的表样式和列样式添加到网格中。 如果没有表样式,您将看见该表,但其格式设置很少,且所有列均可见。
请参见
任务
如何:向 Windows 窗体 DataGrid 控件添加表和列