如何使用导入的DataSet与TableAdapter填充WinForm的DataGridView
用已导入的DataSet和TableAdapter填充DataGridView的步骤
嘿,这事儿我熟!既然你已经通过向导导入了DataSet和对应的TableAdapter,那直接用它们来给DataGridView填数据比新建对象更省事,跟着下面的步骤来就行:
1. 准备窗体组件
先确保你已经把DataGridView拖到WinForm窗体上了。如果想要更灵活的数据操作(比如支持排序、筛选),可以额外拖一个BindingSource组件到窗体上——这个不是必须,但用起来会更顺手。
2. 实例化TableAdapter并填充DataSet
向导生成的TableAdapter是类,所以你需要先创建它的实例,再调用Fill方法把数据库数据填充到DataSet对应的DataTable中:
// 替换成你实际的DataSet和表名 var myTableAdapter = new MyDataSetTableAdapters.ProductsTableAdapter(); var myDataSet = new MyDataSet(); // 如果窗体上已经拖了DataSet组件,直接用那个实例就行 // 把数据填充到DataSet的Products表 myTableAdapter.Fill(myDataSet.Products);
3. 绑定到DataGridView
直接绑定DataTable
如果不用BindingSource,直接把DataGridView的DataSource指向DataSet里的DataTable即可:
dataGridView1.DataSource = myDataSet.Products;
通过BindingSource绑定(推荐)
先把BindingSource的数据源设为目标DataTable,再将DataGridView的数据源指向BindingSource:
// 假设你拖了一个名为bindingSource1的组件 bindingSource1.DataSource = myDataSet.Products; dataGridView1.DataSource = bindingSource1;
这种方式的好处是后续做数据刷新、排序、筛选都会更方便,比如刷新数据只要重新调用myTableAdapter.Fill(myDataSet.Products);,BindingSource会自动同步到DataGridView。
额外小提示
- 刷新数据:如果数据库里的数据更新了,再次调用
TableAdapter.Fill()方法就行,不需要重新设置DataSource。 - 保存修改:如果用户在DataGridView里修改了数据,直接调用
TableAdapter.Update(myDataSet.YourTableName)就能把改动同步回数据库。 - 连接字符串:向导生成的连接字符串已经存在
app.config里,TableAdapter会自动读取,不用手动配置。
内容的提问来源于stack exchange,提问作者Rico Strydom
相关产品推荐
相关产品推荐

