请看如下代码:
private void InitializeDataGridView()
{
            try
            {
                //建立DataGridView控件
                dataGridView1.Dock = DockStyle.Fill;
                //自动生成DataGridView
                dataGridView1.AutoGenerateColumns = true;
                //建立数据源
                bindingSource1.DataSource = GetData("Select * From Products");
                dataGridView1.DataSource = bindingSource1;
                //自动调整可视化行
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
                //设置DataGridView控件的边界
                dataGridView1.BorderStyle = BorderStyle.Fixed3D;
                //当用户使用DataGridView控件时,它会成为可编辑模式
                dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
            }
            catch (SqlException e)
            {
MessageBox.Show("To run this sample replace connection.ConnectionString"+ " with a valid connection string to a Northwind"+" database accessible to your system.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                System.Threading.Thread.CurrentThread.Abort();
            }
        }
        private static DataTable GetData(string sqlCommand)
        {
            string connectionString = "Integrated Security=SSPI;" + "Persist Security Info=False;" + "Initial Catalog=Northwind;Data Source=localhost";
            SqlConnection northwindConnection = new SqlConnection(connectionString);
            SqlCommand command = new SqlCommand(sqlCommand, northwindConnection);
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = command;
            DataTable table = new DataTable();
            table.Locale = System.Globalization.CultureInfo.InvariantCulture;
            adapter.Fill(table);
            return table;
}
代码中dataGridView1.DataSource被设置为bindingSource1
2DataGridView控件的创建
向窗体添加DataGridView控件过程如图455所示:
4-2 ADO.NET-查询和检索数据8_职场
4-55 向窗体添加DataGridView控件图
455描述的是向窗体添加DataGridView控件过程。在工具箱中选择“数据”选项卡,找到DataGridView控件,点击后向窗体拖放,在设计窗口中出现DataGridView控件。默认的DataGridView控件的对象名为dataGridView1,右击dataGridView1控件选择“属性”,在属性窗口可以对对象dataGridView1的属性进行设置。主要是可以对DataSourceDataMember等属性进行配置。也可以在后续代码中进行设置。这样创建出来的对象dataGridView1就可以在后续程序中与数据绑定进行应用。当然,除了利用可视化界面创建DataGridView控件这种方法以外,还可以利用编程的方法。编程这种方法这里不过多叙述。
3)为DataGridView控件绑定数据
可以与DataGridView控件进行绑定的数据源包括:DataSetDataViewDataTable;数组;列表。进行数据绑定的方法有三种:
n方法一,直接用DataView对象或DataTable对象为DataGridView控件的DataSource属性进行赋值,见如下代码示例:
      dbgPassenger.DataSource = objDataSet.Tables["Passenger"].DefaultView;
n方法二,用DataSet对象为DataGridView控件的DataSource属性进行赋值,用DataSet对象中的DataTable对象为DataGridView控件的DataMember属性赋值,见如下代码示例:
            dbgBooks.DataSource = objDataSet;
            dbgBooks.DataMember = "Titles";
n方法三,调用DataGridView控件的SetDataBinding()方法,将DataSet对象DataSet对象中的DataTable对象作为第一、第二参数传递给方法完成数据绑定,见如下代码示例:
            dbgBooks.SetDataBinding(objDataSet, "Titles");

4.案例学习:DataGridView控件绑定数据案例。

u实验步骤(1):
向一窗体拖拽一个DataGridView控件。
u实验步骤(2):
数据库的设计参见图456
4-2 ADO.NET-查询和检索数据8_职场_02
4-56 数据库设计图
数据库为school1,仅用了两个表,mz是表示民族的表,student是表示学生的表。具体字段设计情况请参见图456。数据库环境是SQL Server 2005
u实验步骤(3):
鼠标右击项目,在弹出的菜单中选择“添加”、“新建项”,在弹出的“添加新项”窗体中选择“代码文件”,名称改为“DataBase.cs”,点击“添加”按钮,完成添加。该文件同前所示,此处不再复述。
u实验步骤(4):
双击窗体,在load事件的处理方法里添加如下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsApplication1
{
    public partial class Form13 : Form
    {
        public Form13()
        {
            InitializeComponent();
        }
        DataBase mydatabase = new DataBase();
        private void Form13_Load(object sender, EventArgs e)
        {
            /*第一种方式:DataSet
            DataSet ds = mydatabase.GetDataSet("select * from student");
            dataGridView1.DataSource = ds.Tables[0];*/
            //第二种方式:DataTable
            DataTable dt = mydatabase.GetDataTable("select * from student");
            dataGridView1.DataSource = dt;
        }
    }
}
代码中有两种数据绑定方法可以被应用。其中第一种方法被注释掉了,如果想应用第一种方法,请去掉第一种方法的注释,并把第二种方法进行注释。程序运行后得到的效果如图457所示:
4-2 ADO.NET-查询和检索数据8_查询_03
4-57 DataGridView控件绑定数据执行效果图

5.通过DataGridView控件插入、更新和删除记录

前面提到,如果修改了DataGridView控件内的数据,或者添加、删除了一条数据记录。与其绑定的DataSet等数据源里相应的数据也会随着一起更新。但如何将这些数据更新发送到数据库以进行保存呢?如图458所示:
4-2 ADO.NET-查询和检索数据8_检索数据_04
4-58 DataGridView控件内的数据更新保存示意图
DataGridView控件内的数据一旦被更新,这个数据的回传和保存过程是通过DataAdapter.Update()方法来实现的。其工作过程原理如图459所示:
4-2 ADO.NET-查询和检索数据8_检索数据_05
4-59 DataGridView控件内的数据更新保存工作原理图
459叙述了被更新的数据又被回传和保存的过程。前面章节曾经提到数据集DataSet里的数据被修改后,回传、保存工作是通过DataAdapter.Update()方法来实现的。这里的应用原理也是一样的。当DataGridView控件内的数据做了任何修改,与其绑定的数据集里的数据也同时被修改。所以也要通过调用DataAdapter.Update()方法来实现DataGridView控件内的被更新数据的回传和保存工作。DataAdapter.Update()方法又是通过相应的执行InsertCommandUpdateCommandDeleteCommand这几个命令对象,并通过SqlParameter对象集合传递修改后的行数据给数据库的。