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 >= )
{
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更新数据到数据库的更多相关文章
- update关联其他表批量更新数据-跨数据库-跨服务器Update时关联表条件更新
1.有时在做项目时会有些期初数据更新,从老系统更新到新系统.如果用程序循环从老系统付给新系统. 2.有时在项目中需要同步程序,或者自动同步程序时会有大量数据更新就可能用到如下方法了. 3.为了做分析, ...
- WinForm中DataGridView显示更新数据--人性版
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Windows Phone本地数据库(SQLCE):13、更新数据(翻译)
这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十三篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的 ...
- C# 数据库dataGridView刷新数据和主外键判断
本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改.删除.插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会 ...
- DataGridView显示数据库内容及更新内容到数据库
1:类Access,包含读取数据库,更新数据库方法: class Access { private OleDbConnection OleCon = null;//连接数据库 ...
- DataGridView修改数据并传到数据库
1. 两个属性设置: 第一个:设置自动创建列,默认为True DataGridView1. AutoGenerateColumns = True; 虽然默认为True,但写下去总是好的!!! 第二个: ...
- C#——数据库取数据,DataGridView显示数据
使用未封装的方法连接数据库 步骤: 一.确定连接方式(以SqlServer为例): ①Windows身份验证. string ConnectionType = "server=.;datab ...
- 使用EF Model First创建edmx模型,数据库有数据的情况下,如何同时更新模型和数据库
使用"EF Model First",我们可以很直观地在edmx文件中创建数据模型,并根据模型生成数据库,整个过程快速而高效.可当数据库中有了一定的数据量,同时,可能需要对模型中字 ...
- 关于EntityFramework 更新数据记录时字段全部更新问题和不从数据库中获取直接更新记录
一.一直对这个比较疑惑感觉只修改一条数据记录的一个字段结果更新Savechages后跟踪生成sql竟然是全部被修改,感觉微软怎么这么傻,总觉得会有其它方式可以只更新部分字段,但一直没有找到相关设置,最 ...
随机推荐
- vector 去重
1.使用unique函数: sort(v.begin(),v.end()); v.erase(unique(v.begin(), v.end()), v.end()); //unique()函数将重复 ...
- ASP.NET多行文本框限制字符个数
asp.net中TextBox当设置TextMode = Multiline时,其MaxLength属性无效.可使用JS进行辅助限制输入的字符个数.中文算两个字符,西文算1个字符. TextBox属性 ...
- nvm管理不同版本的node和npm
写在前面 nvm(nodejs version manager)是nodejs的管理工具,如果你需要快速更新node版本,并且不覆盖之前的版本:或者想要在不同的node版本之间进行切换:使用nvm来安 ...
- 一个Boss直聘机器人, 自动回复发简历
goBoss 基佬github地址 这是基于go语言编写的一款boss直聘机器人软件(牛人版).附上Python版本, 无需配置Go环境, 我会提供windows和macos的可执行程序.不喜勿喷O( ...
- 【URLOS应用开发基础】10分钟制作一个nginx静态网站环境应用
URLOS开发者功能已上线有一段时间了,目前通过部分开发者的使用体验来看,不得不说URLOS在服务器软件开发效率方面确实有着得天独厚的优势,凭借docker容器技术与其良好的应用生态环境,URLOS必 ...
- PAT甲题题解-1019. General Palindromic Number (20)-又是水题一枚
n转化为b进制的格式,问你该格式是否为回文数字(即正着写和倒着写一样)输出Yes或者No并且输出该格式又是水题... #include <iostream> #include <cs ...
- Haskell(一 )------ Windos下环境配置
1.去官网下载安装包 2.然后运行安装包路径最好就不要改了. 3.打开命令行输入 cabal user-config init 会出现默认的放置配置文件的地址,然后到那个文件夹下修改config文件. ...
- [Week2 作业] 代码规范之争
这四个问题均是出自 http://goodmath.scientopia.org/2011/07/14/stuff-everyone-should-do-part-2-coding-standards ...
- Cisco Packet Tracer 交换机 2950-24 配置
大步骤1:设置交换机名字.特权模式口令.本地管理口令.远程登入口令 Switch>en 进入特权模式 Switch#conf t 进去全局配置模式 Enter configurati ...
- [转帖]PG里面的Citus简介----找时间学习一下.
1. Citus是什么 是PostgreSQL的扩展,可以同PG一同安装,之后通过SQL命令加入到数据库中. [相关操作] ? 1 2 #创建Citus扩展: CREATE EXTENSION cit ...