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 >= )
{
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的属性:

DataGridView更新数据到数据库的更多相关文章

  1. update关联其他表批量更新数据-跨数据库-跨服务器Update时关联表条件更新

    1.有时在做项目时会有些期初数据更新,从老系统更新到新系统.如果用程序循环从老系统付给新系统. 2.有时在项目中需要同步程序,或者自动同步程序时会有大量数据更新就可能用到如下方法了. 3.为了做分析, ...

  2. WinForm中DataGridView显示更新数据--人性版

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. Windows Phone本地数据库(SQLCE):13、更新数据(翻译)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十三篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的 ...

  4. C# 数据库dataGridView刷新数据和主外键判断

    本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改.删除.插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会 ...

  5. DataGridView显示数据库内容及更新内容到数据库

    1:类Access,包含读取数据库,更新数据库方法: class Access    {        private OleDbConnection OleCon = null;//连接数据库    ...

  6. DataGridView修改数据并传到数据库

    1. 两个属性设置: 第一个:设置自动创建列,默认为True DataGridView1. AutoGenerateColumns = True; 虽然默认为True,但写下去总是好的!!! 第二个: ...

  7. C#——数据库取数据,DataGridView显示数据

    使用未封装的方法连接数据库 步骤: 一.确定连接方式(以SqlServer为例): ①Windows身份验证. string ConnectionType = "server=.;datab ...

  8. 使用EF Model First创建edmx模型,数据库有数据的情况下,如何同时更新模型和数据库

    使用"EF Model First",我们可以很直观地在edmx文件中创建数据模型,并根据模型生成数据库,整个过程快速而高效.可当数据库中有了一定的数据量,同时,可能需要对模型中字 ...

  9. 关于EntityFramework 更新数据记录时字段全部更新问题和不从数据库中获取直接更新记录

    一.一直对这个比较疑惑感觉只修改一条数据记录的一个字段结果更新Savechages后跟踪生成sql竟然是全部被修改,感觉微软怎么这么傻,总觉得会有其它方式可以只更新部分字段,但一直没有找到相关设置,最 ...

随机推荐

  1. [CF1083D]The Fair Nut’s getting crazy[单调栈+线段树]

    题意 给定一个长度为 \(n\) 的序列 \(\{a_i\}\).你需要从该序列中选出两个非空的子段,这两个子段满足 两个子段非包含关系. 两个子段存在交. 位于两个子段交中的元素在每个子段中只能出现 ...

  2. SSIS 组件属性整理

    整理SSIS 组件的属性解释及其用法 一,ExecValueVariable属性 有些Task组件执行完成之后,会产生输出结果,称作Execution Value,例如,Execute SQL Tas ...

  3. C#_备份sqlserver数据库

    C# 代码备份数据库 ,不需要 其他 DLL protected void Button1_Click(object sender, EventArgs e)    {        ///     ...

  4. ecCodes 学习 利用ecCodes fortran90 api对GRIB文件进行读写

    参考 https://www.ecmwf.int/assets/elearning/eccodes/eccodes2/story_html5.htmlhttps://confluence.ecmwf. ...

  5. 如何在unity中使用龙骨动画

    龙骨 龙骨是Egret公司的一个用来做动画的软件,本文分享一下如何在Unity2D中使用龙骨导出的2D动画 导出动画 在龙骨中文件->导出,导出动画数据和纹理到Unity的项目中,如果打包了的话 ...

  6. python之GIL理解

    GIL(Global Interpreter Lock) 全局解释器锁 python3中是假的多线程,它不是真正的并行,是利用了cpu上下文的切换而已.同一时间只能有一个线程使用共享数据,其它线程处于 ...

  7. 如何理解nexus

    理解: Nexus即区块链:分布式部署肯定是构建去中心化网络理所当然的解决方向--通过P2P协议将全世界所有节点计算机彼此相互连接,形成一张密密麻麻的网络:以巧妙的机制,通过节点之间的交易数据同步来保 ...

  8. xss基础

    0x0 定义 总结: (1)     在页面显示 (2)     用户可控 满足以上两点就有可能存在xss 0x1反射型 0x2存储型 0x3 DOM型 与反射型相似 也是从get等参数传参 但 反射 ...

  9. Vue.js 相关知识(路由)

    1. 简介 路由,工作原理与路由器相似(路由器将网线总线的IP分发到每一台设备上),Vue中的路由根据用户在网页中的点击,将其引导到对应的页面. 2. 使用步骤 安装vue-router或者直接引入v ...

  10. 了不起的Node.js--之五 TCP连接

    TCP连接 传输控制协议(TCP)是一个面向连接的协议,它保证了两台计算机之间数据传输的可靠性和顺序. TCP是一种传输层协议,它可以让你将数据从一台计算机完整有序地传输到另一台计算机. Node.j ...