WinForm控件之DataGridView控件使用
一、使用DataGridView展示从数据库一张表中查询到的数据
数据库中student表结构如下
数据
1.在窗体上添加DataGridView控件,命名dgvData,并且添加与student表字段名相同名称的5列,其中性别列的类型为下拉控件,在ColumnType属性下设置类型
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控件在界面修改数据并提交更新到数据库
在数据中查询单表进行展示是,可以将界面修改的数据批量更新到数据库
使用到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); }