DataGridView更新数据到数据库
WinFrom程序绑定了一个DataGridView控件,我需要添加一个button按钮来更改状态,还需要把更新之后的状态更新到数据库,如下图所示的这样:
首先先来拖控件,把界面做出来,自己拖一个DataGridView,出来,然后设置列宽,你可以去属性那里去设置,也可以写代码来控制,代码如下
this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
然后呢,再来给DataGridView加button。点击右上角的小三角,有一个添加列:
选择button之后,改名称什么的自己看吧,有了button之后,只需要在界面上双击button就可以进入button事件了,在编辑列里面可以改一些button的属性,如图:
一、把数据显示在DataGridView上
我用的是datatable的方式:
public DataTable DbConnection(string sql,DataTable dt) { using (SqlConnection con = new SqlConnection(connstr)) { if (con.State == ConnectionState.Closed) { con.Open(); } SqlCommand cmd = new SqlCommand(sql, con); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } return dt; }
dataGridView1.DataSource = DbConnection(sql,dt);
有时候你添加了之后表格并不会显示,这是因为你没有绑定,再加一行代码就行了
dataGridView1.DataSource = DbConnection(sql,dt);
二、把更改后的数据从DataGridView上同步到数据库
这里呢,有几种情况。例如SqlCommandBuilder 或者 直接写SQL语句也行,下面就介绍一下这两种方法吧
第一种方法:SqlCommandBuilder
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { DataGridViewColumn column = dataGridView1.Columns[e.ColumnIndex]; if (column is DataGridViewButtonColumn) { //在这里写你的操作,上面的是判断你点击的是哪一个button按钮 } } }
如果要修改当前行的数据可以这样:
dataGridView1["PlaceDescribe", e.RowIndex].Value = "已禁用"; //PlaceDescribe是数据库里面的列名
SqlCommandBuilder :不建议使用,因为我用的时候数据更新有bug,准确率不高,我不知道原因。反正不推荐使用。
using (SqlConnection con = new SqlConnection(connstr)) { if (con.State == ConnectionState.Closed) { con.Open(); } SqlCommand cmd = new SqlCommand(sql, con); da = new SqlDataAdapter(cmd); SqlCommandBuilder scb = new SqlCommandBuilder(da); try { //强烈建议把这里写入trycatch语句 da.Update(db.DbConnection(sql,dt)); MessageBox.Show("保存成功"); } catch (Exception) { throw; } }
剩下的这个就是直接写sql语句了,这个很简单
setSql = "update RtdbTransPlace set PlaceState=1,PlaceDescribe='已启用' where Tag= '" + dataGridView1["Tag", e.RowIndex].Value + "'"; using (SqlConnection con = new SqlConnection(connstr)) { if (con.State == ConnectionState.Closed) { con.Open(); } SqlCommand cmd = new SqlCommand(setSql, con); try { int count = cmd.ExecuteNonQuery(); MessageBox.Show("保存成功"); } catch (Exception) { throw; } }
关于表格线的问题,可以修改DataGridView的属性:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步