一、使用DataGridView展示从数据库一张表中查询到的数据

数据库中student表结构如下

datagridview 三层架构 datagridview控件怎么用_控件

 

数据

datagridview 三层架构 datagridview控件怎么用_datagridview 三层架构_02

 

1.在窗体上添加DataGridView控件,命名dgvData,并且添加与student表字段名相同名称的5列,其中性别列的类型为下拉控件,在ColumnType属性下设置类型

datagridview 三层架构 datagridview控件怎么用_sql_03

2.查询

在查询数据之前,先要初始化性别下拉控件,不然展示数据时会报错。DataGridViewComboBoxColumn 的用法和ComboBox差不多

初始化代码如下:

private void FrmDataGridView_Load(object sender, EventArgs e)
        {
            //初始化性别下拉控件
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[] { new DataColumn("Value"), new DataColumn("Text") });
            DataRow dr = dt.NewRow();
            dr["Value"] = 0;
            dr["Text"] = "男";
            dt.Rows.Add(dr);

            DataRow dr1 = dt.NewRow();
            dr1["Value"] = 1;
            dr1["Text"] = "女";
            dt.Rows.Add(dr1);

            DataGridViewComboBoxColumn cbo = dgvData.Columns["SEX"] as DataGridViewComboBoxColumn;
            cbo.DisplayMember = "Text";
            cbo.ValueMember = "Value";
            cbo.DataSource = dt;
        }

查询student表并展示数据代码如下:

private void btnSearch_Click(object sender, EventArgs e)
        {
            string sql = "select * from student";
            DataTable dt = DBHelper.GetDataTable(sql);
            dgvData.DataSource = dt;
        }

界面效果:

datagridview 三层架构 datagridview控件怎么用_数据_04

 

二、使用DataGridView控件在界面修改数据并提交更新到数据库

在数据中查询单表进行展示是,可以将界面修改的数据批量更新到数据库

使用到SqlDataAdapter和SqlCommandBuilder两个对象

先执行查询,得到SqlDataAdapter,将数据填充到临时表

查询代码如下:

SqlDataAdapter adapter = null;
        private void btnSearch_Click(object sender, EventArgs e)
        {
            string sql = "select * from student";
            adapter = DBHelper.GetDataAdapter(sql);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            dgvData.DataSource = dt;
        }

数据展示到DataGridView界面后,可以在界面修改数据,执行更新,数据库中的数据会同步更新,更新代码如下:

private void btnUpdate_Click(object sender, EventArgs e)
        {
            //SqlCommandBuilder用来 关联SqlServer和Dataset的 
            DataTable dt = dgvData.DataSource as DataTable;
            SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(adapter);
            adapter.Update(dt);//支持动态sql单表更新

            btnSearch_Click(null, null);
        }