一、使用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);
}