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